定时任务的配置

2020-06-24  本文已影响0人  菊地尤里

第一步:spring-context.xml的schema

xmlns:task="http://www.springframework.org/schema/task"  
  xsi:schemaLocation="
http://www.springframework.org/schema/task  
 http://www.springframework.org/schema/task/spring-task-4.1.xsd"

第二步:spring-context.xml配置

<context:component-scan base-package="com.xxx" />  //确保扫描了该包   

<task:executor id="executor" pool-size="10"/>  //执行线程池配置 
<task:scheduler id="scheduler" pool-size="10"/>  //调度线程池配置
<task:annotation-driven scheduler="scheduler" executor="executor" 
proxy-target-class="true"/> 开启定时任务

第三步:task加注解

@Service
@Lazy(false)   //这样这个类就不会延迟加载了
public class xxxxTask {

    @Async   //异步执行
    @Scheduled(cron = "0 0/1 * * * ?")  //每一分钟执行一次
    public void dataSync(){
    }

@fixedDelay 间隔时间是根据上次的任务结束的时候开始计时的。比如一个方法上设置了fixedDelay=5*1000,那么当该方法某一次执行结束后,开始计算时间,当时间达到5秒,就开始再次执行该方法。

@fixedRate 间隔时间是根据上次任务开始的时候计时的。比如当方法上设置了fiexdRate=5*1000,该执行该方法所花的时间是2秒,那么3秒后就会再次执行该方法。

@Lazy指定该Bean是否预初始化。主要用于修饰Spring Bean类,用于指定该Bean的预初始化行为,使用该Annotation时可以指定一个boolean型的value属性,该属性决定是否要预初始化该Bean

lazy=false代表不延时,如果对象A中还有对象B的引用,会在A的xml映射文件中配置b的对象引用,多对一或一对多,不延时代表查询出对象A的时候,会把B对象也查询出来放到A对象的引用中,A对象中的B对象是有值的。

lazy=true代表延时,查询A对象时,不会把B对象也查询出来,只会在用到A对象中B对象时才会去查询,默认是true,一般需要优化效率的时候会用到

上一篇下一篇

猜你喜欢

热点阅读