我做了一个javaweb的基础项目,并在上面添加了spring事务配置,但是没有效果。在此之前,它运行良好。网上查了很多资料,配置和我的一样。
预期结果是不会插入任何内容,但插入了一条记录。
请帮我看看问题出在哪里,谢谢
我的serviceimpl路径是:com.lidaning.sys.user.service.UserInfoServiceImpl
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="insert*" propagation="REQUIRED"/>
<tx:method name="*"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="txPointcut" expression="execution(* com.lidaning.sys.user.service..*.*(..))" />
<aop:advisor pointcut-ref="txPointcut" advice-ref="txAdvice"/>
</aop:config>
@Override
public void insertUser(UserInfo u) {
u.setId("1");
u.setName("lidaning");
u.setPassword("***");
userInfoDao.insertUser(u);
userInfoDao.insertUser(u); //occur exception
}
最佳答案
我明白了原因。由于spring加载了两次serviceBean(spring、springMVC),导致service失去了事务的特性。当我将 Controller 与应用程序上下文分离并将其放入 springMVC 中时,它可以工作。
关于java - 为什么插入两条相同的记录事务不回滚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53955001/