Spring事务配置

时间:2011-07-19 12:52:45

标签: java spring interface transactions annotations

通过xml配置Spring事务时,绑定接口或具体是否合适  交易类?我在想我们应该有映射的接口  事务处理,但我从Spring文档中找到了这个:  “Spring团队的建议是,你只需要注释具体的类  @Transactional注释“。

请分享您的想法。

3 个答案:

答案 0 :(得分:3)

事务边界是实现细节,因此它们应该由实现而不是通过接口指定。

例如,假设在某些复杂的情况下,您需要对您的某个方法使用程序化事务管理(TransactionTemplate)而不是@Transactional。如果您在接口级别有@Transactional,则无法进行此操作。

答案 1 :(得分:2)

接口是合同。交易性不是(通常)合同的一部分。这是一个实现细节。因此@Transactional属于实现类,而不属于接口。

答案 2 :(得分:0)

@Transactional 注释不是从接口继承的,因此如果您使用不同的代理方法(例如 proxy-target-class = true aspectj) )您的真实方法不会是交易性的。

请参阅proxy-aop(用于标准事务注释) http://static.springsource.org/spring/docs/3.0.x/reference/aop.html#aop-understanding-aop-proxies