项目结构说明
项目结构图
job类代码
1 | /*** |
job类需要继承QuartzJobBean,并且复写executeInternal方法,这里需要注意不要直接在该方法内写业务代码因为可能会导至事务完整性问题,实际的业务代码需要在TestService中进行编写,并将该服务类注入到自定的job中进行业务调用。@DisallowConcurrentExecution注解不可缺少。
Service类代码
1 | @Service |
如上代码,需要@Service注解让你的服务类被IOC容器管理,并且在你的业务方法上面使用@Transactional注解,至于传播属性需要根据实际业务情况进行使用,如果不存在事务嵌套的情况,上述两种方式基本都可以解决大部分的问题,下一篇文章中我们会详细分析一下遇到事务嵌套情况该如何处理(这是一个比较复杂的问题,可能需要对aop有一定深度的理解,下一篇中我们详细探讨一下)。
事务完整性演示
介绍完基本的开发方法,来检测一下是否按照上述标准事务完整性是正确的。
1、job类
1 | @Slf4j |
2、service类
1 | @Service |
3、注册任务项目启动后每隔15秒执行一次
1 | @Component |
4、执行结果
4.1 服务代码中int j = 1/0没有注释掉
4.1 下面我们把服务代码中int j = 1/0注释掉,再看执行结果