2011-11-23 34 views
1

实施例的范围: 我有两个Maven的模块,模块A包含DAO类用于访问数据库和模块B是depence上模块A的服务,并提供用于访问方法数据。的弹簧配置XML文件在不同的行家模块

在模块A中的XML文件激活Spring使用注释驱动的事务:

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

意思我可以使用在模块B中的交易注解(@Transactional)??我如何看到注释不仅被忽略?

thanx提前

回答

1

只要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。

+0

集成测试是什么意思?你能举一个例子来说明如何测试注解的用法吗?我相对较新的春天.. =/ – TekTimmy

+0

请参阅代码片段的更新。 –

3

<tx:annotation-driven>和其他类似的声明的范围是一个application context

如果来自不同模块的XML文件是由一个单一的应用程序上下文中使用,<tx:annotation-driven>被施加到在这方面所有豆。否则,如果每个模块创建自己的应用程序上下文,则需要在其中的每个模块中声明<tx:annotation-driven>

+0

谢谢您的回答=),但我真的不明白,所以在相关的是应用程序上下文?项目A(DAO)具有激活“注释驱动”的XML文件,项目B没有XML但使用注释,它是否工作? – TekTimmy