我创建了一个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),这导致服务失去了事务的特性。当我从applicationcontext中分离控制器并将其放入springMVC时,它就可以工作了。