14

我已经为此苦苦挣扎了几个小时。

我正在尝试将我的 Spring XML 配置迁移到基于 Java 的完整配置。

AnnotationConfigApplicationContext用作上下文实现。

从我的旧 XML 配置中,我无法找到该行的 Java 等效项:

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

因此,Spring 不管理事务。

在我的 Java 配置中,我已经为事务初始化了相关的 bean:会话工厂、事务管理器等,但是如果没有该行,则不使用事务代理,因此实际上没有事务到位。

所以我的问题是如何将该行转换为我的 Java 上下文配置,或者如何以另一种方式解决问题。

任何帮助表示赞赏。谢谢。

4

3 回答 3

12

您现在可以使用@EnableTransactionManagement。

见:http: //blog.springsource.com/2011/06/10/spring-3-1-m2-configuration-enhancements/

于 2012-05-10T13:23:15.813 回答
2

@Bean根据我的经验,用-style config完全替换 XML 配置是不切实际的。在 java 中配置某些东西确实更有意义,特别是您自己的 bean 定义。但是当涉及到像 . 这样的基础结构类型声明<tx:annotation-driven>时,XML 语法要简洁得多。

可以在纯 java 中重现相同的效果,但最终会变得繁琐且不直观,因为诸如此类<tx:annotation-driven>的事情通常是您真的不想接触的复杂低级 Spring 基础结构类的交互。

我的建议 - 混合搭配,使用 Java 和 XML 各自的优势。这很容易做到。我更喜欢保留普通的 XML ApplicationContext 类,然后@Configuration在那个 XML 上下文中将我的类声明为 bean,以及<tx:annotation-driven>.

于 2010-11-09T22:44:12.833 回答
0

看看https://spring.io/blog/2011/02/17/spring-3-1-m1-introducing-featurespecification-support。Spring 3.1 的 FeatureSpecification 类,例如 TxAnnotationDriven,旨在准确解决上述问题。

于 2011-02-18T01:06:33.670 回答