原来Spring定时器可以这样注入service


近日项目开发中需要执行一些定时任务,比如需要在每天凌晨时候,分析一次前一天的日志信息,借此机会整理了一下定时任务的几种实现方式,由于项目采用spring框架,所以我都将结合spring框架来介绍。

一、定时器的配置

注意配图中beans里面,要有相关的引用

beans引用

----------------------------------------
xmlns:task="http://www.springframework.org/schema/task"
------------------------------------------
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-3.2.xsd
-------------------------------------------
<!-- task任务扫描注解 -->
<task:annotation-driven />
<context:component-scan base-package="所需要扫描的包或类"></context:component-scan>

二、创建方法

创建相对应的处理业务的Task方法

业务方法

注:需要添加相关的注解。@Component@Scheduled

三、注入

定时器已经基本满足了基本业务的开发,但是,由于定时器的执行优先于注入,因此我们不能通过@Resource注入service。因此我们需要创建一个类ApplicationContextUtil,用来获取service。

ApplicationContextUtil

四、获取service

定时器中通过ApplicationContextUtil类,获得service

获取service

注:相对应的,在service中需要配置service名称。

service名称

这样我们就可以获取到service对象进行相对应的业务处理,而不需要再创建jdbc来操作了。


  目录