task定时任务在spring中的使用

本文介绍如何在Java Web应用中部署定时任务,包括引入依赖、配置监听器、实现任务管理器和具体任务执行类等步骤。

1.引入必需的jar

2.在web.xml中配置监听,启动时初始化定时任务

<listener>
    <listener-class>com.iss.iaf.task.StartInit</listener-class>
</listener>

3.新建java类,StartInit实现ServletContextListener。

public void contextDestroyed(ServletContextEvent arg0) {

}

public void contextInitialized(ServletContextEvent arg0) {

    TaskManager.getInstance();  

}

4.新建java类,TaskManager

private static class SingleHolder{
    private static TaskManager instance = new TaskManager(); 
}

//任务的入口
public static TaskManager getInstance(){
    return SingleHolder.instance;
}


public void startTask(){
    TaskManager.getInstance();

}
private TaskManager(){
    try {
        Scheduler sched = StdSchedulerFactory.getDefaultScheduler();    
        //配置任务的执行时间
        String key = "0 0/1 * * * ? ";
        TaskUtil.cronExecute(ExecuterTask.class , sched, key);
        sched.start();
    } catch (SchedulerException e) {
        e.printStackTrace();
    }
}

5.新建java类,TaskUtil

/**
 * 根据cornExpression来执行计划任务
 * @param jobClass
 * @param sched
 * @param cronExpression
 */
public static void cronExecute(Class<? extends Job> jobClass,Scheduler sched,String cronExpression,String name){
    if(!CronExpression.isValidExpression(cronExpression)){
        System.out.println("表达式不合法");
        System.out.println(cronExpression+"");
    }
    try{
        JobDetail job = new JobDetail(name, name, jobClass);
        CronTrigger trigger = new CronTrigger();
        trigger.setName(name+"_trigger");
        trigger.setGroup(name+"_group");
        trigger.setCronExpression(cronExpression);
        sched.scheduleJob(job, trigger);
    }catch(Exception e){
        e.printStackTrace();
    }
}

6.新建java类,ExecuterTask 实现Job

@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
    // 直接在实现里面写任务的业务

}

注:如果想要注入bean,则要注意三点
        1.在类上方加上@Component注解
        2.public static ExecuterTask executerTask;  静态化类
        3.public ExecuterTask() {
        }

        @PostConstruct
        public void init() {
            executerTask = this;
            executerTask.reportManagementService = this.reportManagementService ;
        }
     只要三点要求达到,则可以注入bean
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值