控制器中的java@Transactional
首先,我想说的是,我完全同意只让服务层进行交易,但有时世界并不完美,现在我正处于这种情况的中间。 基本上,我被分配到一个优秀的项目中,遗留代码为4年以上。问题是,开发人员没有遵循任何模式来引入业务逻辑,这样您就可以将来自控制器的多个服务调用以及之后对私有方法的一些额外调用镜像到控制器中。 没有预算重构,我们有很多问题与酸,所以唯一的解决方案,我发现是使控制器交易,至少有一个完整的回滚,如果在中间的请求/响应出错。 问题是我不能让它工作。我会向你们描述我的配置,看看你们能不能帮我。 我有一个调用webmvc配置的DispatcherServlet。xml,其中有控制器的声明 <context:component-scan base-package="com.greenvalley.etendering.web.controller**" use-default-filters="false">
<context:include-filter expression="org.springframework.stereotype.Controller" type="annotation"/>
</context:component-scan>
然后contextConfiguration调用我的applicationContext。xml,其中包含Spring配置的所有其余部分
在阅读了这么多票据之后,我尝试了很多说服,例如,尝试再次将我的控制器声明到应用程序上下文中
<tx:annotation-driven mode="aspectj"/> I tried with proxy as well
<context:component-scan base-package="com.greenvalley.etendering.web.controller.*" />
但还是什么都没有
在txManager的配置中,我不做任何事情,只需添加对entityManagerFactory的引用即可
<tx:annotation-driven transaction-manager="transactionManager"/>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>
在我的控制器中,我添加了@Transactional,但每次我向@Transactional类/方法发出请求时,我都没有看到进入JpaTransactionalManager doBegin方法的断点停止
请给我任何建议
问候
共 (0) 个答案