QuartzとSpringフレームを統合する3つの方法


QuartzとSpringフレームを統合する3つの方法
XML+Spring MVCバージョン
POMファイル

  4.0.0
  
  com.adagio
  task
  0.0.1-SNAPSHOT
  war
  task
  
  
  
    UTF-8
    4.1.6.RELEASE
  
  
  
  
      
        org.aspectj
        aspectjweaver
        1.8.3
    
    
      
        org.quartz-scheduler
        quartz
        2.2.1
    
    
    
      javax
      javaee-api
      7.0
      provided
    
    
    
         junit
         junit
         4.12
         test
     

      
      
          org.springframework
          spring-context
          ${spring.version}
      
      
          org.springframework
          spring-test
          ${spring.version}
      
      
          org.springframework
          spring-context-support
          ${spring.version}
      
      
          org.springframework
          spring-webmvc
          ${spring.version}
      
      
          org.springframework
          spring-tx
          ${spring.version}
      



  
    
  
      task
    
      
        maven-compiler-plugin
        2.3.2
        
          1.7
          1.7
        
      
      
                org.apache.maven.plugins
                maven-war-plugin
                2.6
            
            
                org.apache.maven.plugins
                maven-surefire-plugin
                2.18.1
                
                    true
                
            
    
  
  
web.xml


  
    contextConfigLocation
    
            classpath*:/spring/spring-core.xml
        
  
  
    org.springframework.web.context.ContextLoaderListener
  
  
    org.springframework.web.context.request.RequestContextListener
  
  
    CharacterEncodingFilter
    org.springframework.web.filter.CharacterEncodingFilter
    
      encoding
      utf-8
    
  
  
    CharacterEncodingFilter
    /*
  
  
    dispatcher
    org.springframework.web.servlet.DispatcherServlet
    
      contextConfigLocation
      classpath*:/spring/spring-mvc.xml
    
    1
  
  
    dispatcher
    /
  
  
  task
  
    index.jsp
  
  
    index.html
    index.htm
    index.jsp
    default.html
    default.htm
    default.jsp
  
spring.xml



    
    
        
    
    
    
    
spring-mvc.xml


    
    
        
    
    
    
    
    
        
            
                     
                     
                    
                        text/plain;charset=UTF-8     
                        text/html;charset=UTF-8     
                         
                     
                  
        
    


    
    
        
        
    
    
    
    
    
    
    

spring-quarartz.xml


    

    
    
        
            
                
                
            
        
      

     
     
        
        
        
    
    
      
    
        
        
            
        
          
            excute
        
    
ハローTask
package com.adagio;

import org.springframework.stereotype.Component;

@Component
public class HelloTask {
    
    public void excute() {
        System.out.println("excute...22222>>>>>>>>");
    }
}
configration+Spring MVC
上と似ていますが、spring-quartz.xmlだけでconfigrationになります.
package com.adagio;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.quartz.CronTriggerFactoryBean;
import org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;

@Configuration
public class QuartzConfig {

    @Bean
    public SchedulerFactoryBean factoryBean() {
        SchedulerFactoryBean factoryBean = new SchedulerFactoryBean();
        
        factoryBean.setTriggers(cronTriggerFactoryBean().getObject());
        return factoryBean;
    }
    
    @Bean
    public CronTriggerFactoryBean cronTriggerFactoryBean() {
        CronTriggerFactoryBean cronTriggerFactoryBean = new CronTriggerFactoryBean();
        cronTriggerFactoryBean.setJobDetail(methodInvokingJobDetailFactoryBean().getObject());
        cronTriggerFactoryBean.setCronExpression("0/5 * * * * ?");
        
        return cronTriggerFactoryBean;
    }
    
    @Bean
    public MethodInvokingJobDetailFactoryBean methodInvokingJobDetailFactoryBean() {
        MethodInvokingJobDetailFactoryBean m = new MethodInvokingJobDetailFactoryBean();
        m.setTargetObject(helloTask());
        m.setTargetMethod("excute");
        return m;
    }
    
    @Bean
    public HelloTask helloTask() {
        return new HelloTask();
    }
    
}
Configration+Spring Boot
QuartzConfigとハローTaskは上記と同じ起動方式が違います.
package com.adagio;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;

@ComponentScan(basePackages= {"com.adagio"})
@SpringBootApplication
public class TimerTaskApplication {

    public static void main(String[] args) {
        SpringApplication.run(TimerTaskApplication.class, args);
    }
}
締め括りをつける
  • はxmlの方式に対して熟知しています.すべての先にxml
  • を配置します.
  • confugration Spring Bootのプロジェクトではないなら、まだ少ない
  • を使っています.