点击事务测试时action会调用createUserInfo方法,该方法会睡眠很长时间,所以之后再点击事务测试不会再调用createUserInfo方法;但是打开一个新页面,同样的地址点击事务测试就能调用createUserInfo方法,再次点击也不会在调用;但是再切到第一个页面又能调用;总之在一个页面只能调用一次,但是切换页面又能调用一次;
createUserInfo方法:
public void createUserInfo(UserInfo userInfo) {
System.out.println("====================================");
try {
Thread.sleep(10000000000L);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
userInfoDao.createUserInfo(userInfo);
}
spring配置:
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="create*" />
<tx:method name="modify*" />
<tx:method name="remove*" />
<tx:method name="*" read-only="true" />
</tx:attributes>
</tx:advice>
<!-- 配置一个事务切面 -->
<aop:config>
<aop:pointcut expression="execution(* fengx.service.*.*(..))" id="txManager" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="txManager" />
</aop:config>
<aop:pointcut expression="execution(* fengx.service.*.*(..))" id="txManager" /> ,你看看你的需要事务的java文件是否在service包下,对于应用事务的包execution(* fengx.service..*.*(..))" id="txManager" />那个更好些,他指的是service包下以及它的子包下的所有文件都应用事务
试过了不行
原来事务的配置是起作用的,只不过在一个页面上是起作用的,在多个页面切换点击就不起作用了