Spring Transaction Annotations vs Tx Namespace:哪个更常用?

时间:2012-01-15 21:40:19

标签: spring transactions

我正在研究这两种方法,以便在我的Spring应用程序中包含事务。至于现在,我更喜欢使用注释,而不是tx命名空间。原因是它有点清除了XML /复杂性。但这只是我的意见。

我没有机会看到当前Spring从业者用于交易的内容。哪一个现在是首选方法,为什么?

换句话说,每种方法的优缺点最终都证明了使用一种方法的合理性?

2 个答案:

答案 0 :(得分:3)

<tx:advice> / <tx:attributes> / <tx:method>

赞成

  • 代码中没有Spring依赖项
  • 非常灵活,例如使get前缀为事务但只读的所有方法
  • 轻松将事务划分应用于各种bean

缺点

  • 繁琐且难以维护XML
  • 更多XML
  • ......更多XML

@Transactional<tx:annotation-driven/>

赞成

  • 简单,只需在类或方法上添加注释
  • 一行XML(甚至没有一行@EnableTransactionManagement),它只是工作

缺点

  • 代码中的Spring依赖
  • 无法应用更多通用规则,例如:包中的所有类Dao

答案 1 :(得分:2)

我更喜欢使用注释来标记事务,而不是因为配置的简易性或者因为担心与Spring的耦合的纯度,而是因为通常情况下,如果没有a,方法中的代码将无法正常工作事务到位:注释指示实现的功能,而不是管理代码的方式(属于Spring配置文件)。