spring schedule定时任务(二):配置文件的方式

接着上一篇,这里使用spring配置文件的方式生成spring定时任务。

1、相应的web.xml没有什么变化,因此便不再罗列。同样的,相应的java代码业务逻辑改动也不大,只是在原来的基础上去掉 @Component和@Scheduled(cron = "0/5 * * * * ?")参数,也就是把这个类和方法变成一个最简单的java类和方法就可以了。

2、既然是配置文件的方式,那么改动大的自然就是pring.xml配置,把原本用注解实现的定时功能放到配置中来,改动后的配置如下:



    
    
    
    

     
     
           
            
            
            schTest1 
         
         
    

    
     
        
             
         
         
            0/5 * * * * ? 
         
    

    
     
        
              
         
    


3、一开始我没有导入其他的jar包,然后启动报错classNotFound,如下:
org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean] for bean with name 'scheTest11' defined in class path resource [spring1.xml]; nested exception is java.lang.ClassNotFoundException: org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean

查了一下后发现这个包没有在spring-context.jar中,而是在spring-context-support.jar中,于是导入这个包。但之后启动继续报错:
java.lang.NoClassDefFoundError: org/quartz/JobDetail

这是说需要quartz这个包,但是没有导入,于是再次导入,启动依旧报错:
java.lang.NoClassDefFoundError: org/springframework/transaction/TransactionException

这个错误曾经见过,我知道是少了spring-tx.jar这个包,于是再次导入,启动之后终于见到想到的结果,五秒执行一次。
至此,使用spring配置文件的方式生成定时任务的功能实现,maven导包最终配置如下:

        org.springframework
        spring-web
        4.1.6.RELEASE
    
    
        org.springframework
        spring-webmvc
        4.1.6.RELEASE
    
    
        org.springframework
        spring-context
        4.1.7.RELEASE
    
    
        org.springframework
        spring-context-support
        4.0.9.RELEASE
    
    
        quartz
        quartz
        1.5.2
    
    
        org.springframework
        spring-tx
        4.1.7.RELEASE
    
  

你可能感兴趣的:(spring schedule定时任务(二):配置文件的方式)