问题缘由:
使用spring定时器的时候发现定时器每运行一次开启的事务都未提交,但我的观察是错误的,实际上定时器每次运行完事务都自动提交了,但是通过这次机会也让我学会了如何手动控制事务。
解决方案:
//1.注入事务控制器(该控制器是spring配置文件中配置的控制器)
@Resource
protected org.springframework.orm.hibernate3.HibernateTransactionManager transactionManager;
//2.设置事务的属性
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED); // 设置事务的隔离级别
//3.控制事务
TransactionStatus status = transactionManager.getTransaction(def);
try {
//逻辑代码
transactionManager.commit(status);//事务提交
} catch (Exception e) {
transactionManager.rollback(status);//事务回滚
}