场景:
1、回滚操作:插入两张表,第一张成功,让第二张失败,则第一张表数据回滚。
2、不使用定时器,用junit测试回滚是生效的,说明配置应该是没什么问题的。
使用的org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator代理
3、后使用AOPUtil测试,发现@Scheduled注解的job类内的类成员变量(业务类,操作数据库)非代理生成。
4、spring版本:4.3.1请问是怎么情况,如何让@Scheduled注解的方法内也能实现事务回滚。

解决方案 »

  1.   

    看看这个,打打基础
    http://www.importnew.com/12300.html
    让方法支持事物,只要在方法上加注解@Transactional,并且保证方法在service接口的实现类里,他得是一个接口方法。
      

  2.   

    感谢回答!顺带装的一手B。首先
    选择BeanNameAutoProxyCreator这个代理就是想对不实现接口的类作为切点。
    @Scheduled注解带来的编程上的方便也是因为一个普通javabean就可以实现,而不用继承quarze的相关类。普通接口方式谁会当成问题呢,非接口方式我也测试通过了。描述已经说了。所以要是决定帮助别人,就请认真点,否则……上面问题的关键是
    服务启动后,定时执行了方法,方法依赖业务操作类,而这个操作类:“@Scheduled注解的job类内的类成员变量(业务类,操作数据库)非代理生成”