实现方式一 注解配置时间的方式
简述:首先开启spring的scheduler,需要在xml中配置,然后就是让spring管理一个类的实例,在该类的方法中指定cron时间表达式即可。
1. application.xml开启spring scheduler
<task:scheduler id="scheduler" pool-size="5"/>
<task:executor id="executor" pool-size="5"/>
<!--开启注解使用方式-->
<task:annotation-driven executor="executor" scheduler="scheduler"/>
2. 托管任务类给spring
2.1 任务类上增加@Component
注解,托管给spring
@Component
2.2 在任务类上指定任务内容的时间表达式(也就是在任务方法上写@Scheduled(cron=........)
)
@Scheduled(cron = "0 44 23 * * ?")
3. 完成
实现方式二 在配置文件中配置时间的方式
简述:方式一存在的一个缺点就是,通过@Scheduled注解写入的时间表达式是硬编码到类中的,如果我们想要以配置的方式动态传入到它里面就会很麻烦,而直接使用‘在xml中配置时间表达式’的方法就简单很多了。
核心思路就是在xml中开启scheduler并指定时间表达式变量,而该变量的值记录在一个properties中,通过
PropertyPlaceholderConfigurer类的加载方式读取配置信息。
1. 创建任务类实例
<bean id="job" class="com.tdt.auth.client.cms.scheduler.PmsScheduler" />
2. 开启spring scheduler并指定任务
<!--初始化一个scheduler-->
<task:scheduler id="scheduler" pool-size="5"/>
<!--<task:executor id="executor" pool-size="5"/>-->
<!-给scheduler指定任务-->
<task:scheduled-tasks scheduler="scheduler" >
<task:scheduled ref="job" method="updatePermissions" cron="${auto_update_time}"/>
</task:scheduled-tasks>
3. 完成
异步
对于异步的使用可以参考这篇文章,写的很不错:
cnblogs.com/technology-huangyan/p/9948434.html