объем весенних конфигурационных XML-файлов на разных модулях maven - PullRequest
1 голос
/ 23 ноября 2011

Пример: у меня есть два модуля Maven, модуль A содержит классы DAO для доступа к базе данных, а модуль B - это служба, которая зависит от модуля A, и предоставляет методы для доступа к данным.

Файл XMLв модуле A активирует Spring для использования транзакций, управляемых аннотациями:

<tx:annotation-driven transaction-manager="transactionManager" />

означает ли это, что я могу использовать аннотации транзакций (@Transactional) в модуле B ??Как я могу увидеть, что аннотации не просто игнорируются?

спасибо заранее

Ответы [ 2 ]

3 голосов
/ 23 ноября 2011

Область действия <tx:annotation-driven> и других аналогичных объявлений - контекст приложения .

Если файлы XML из разных модулей используются одним контекстом приложения, <tx:annotation-driven> применяется ко всем компонентам в этом контексте. В противном случае, если каждый модуль создает свой собственный контекст приложения, вам необходимо объявить <tx:annotation-driven> в каждом из них.

1 голос
/ 23 ноября 2011

Пока зависимости Maven правильно подключены, не должно иметь значения, что DAO находится в другом JAR-классе от класса обслуживания. Вы можете использовать свой интеграционный тест, чтобы убедиться, что аннотации не игнорируются.

[UPDATE]
SomeTest.java

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:applicationContext.xml"})
public class SomeTest {
  @Autowired EmployeeService employeeService;
  @Test 
  public final void addEmployee() throws Exception {
    employeeService.addEmployee(new Employee("John Doe"));
  }
}

EmployeeService.java

@Service("employeeService")
public class EmployeeService() {
  @Autowired private EmployeeDao employeeDao;

  @Transactional
  public void addEmployee(final Employee employee) {
    employeeDao.insert(employee);
  }
}

Все вышеперечисленное находится в модуле, который содержит сервис. DAO исходит из другого JAR, как вы описали.

...