spring 通过配置向quartz 注入service

一般情况下,quartz的job中使用autowired注解注入的对象为空,这时候我们就要使用spring-quartz提供的AdaptableJobFactory类。

<bean id="IJobLogService" class="org.ssm.dufy.service.impl.IJobLogServiceImpl"></bean>

<bean name="quartzScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" >
        <property name="dataSource" ref ="dataSource" />  
        <property name="schedulerContextAsMap">      
            <map>      
                <!-- spring 管理的service需要放到这里,才能够注入成功 -->      
                <description>schedulerContextAsMap</description>      
                <entry key="IJobLogService" value-ref="IJobLogService"/>           
            </map>      
        </property>           
        <property name="applicationContextSchedulerContextKey" value="applicationContextKey"/>
        <property name="configLocation" value="classpath:quartz.properties"/>
    </bean>

首先将service的实现类作为一个普通的bean注入到spring ,然后按照上述配置的方法设置name为quartzScheduler的bean,设置schedulerContextAsMap属性,若要设置多个service,可以设置多个<entry>

public class HelloWorldJob extends QuartzJobBean{

@Autowired
private IJobLogServiceImpl iJobLogService;

Log logger = LogFactory.getLog(HelloWorldJob.class);

@Override
protected void executeInternal(JobExecutionContext context)
throws JobExecutionException {
     //获取JobExecutionContext中的service对象    
       try {
SchedulerContext skedCtx = context.getScheduler().getContext();
iJobLogService=(IJobLogServiceImpl)skedCtx.get("IJobLogService");    
} catch (SchedulerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}    
       JobMsg jobMsg=new JobMsg();
       jobMsg.setId(1);
       jobMsg.setMsg("from HelloWorldJob");
       jobMsg.setTrg("");
       jobMsg.setMark((new Date()).toString());
       iJobLogService.insertJobMsg(jobMsg);

}   

 quartz.properties设置

# Default Properties file for use by StdSchedulerFactory
# to create a Quartz Scheduler Instance, if a different
# properties file is not explicitly specified.
#
#============================================================================
# Configure Main Scheduler Properties
#============================================================================
org.quartz.scheduler.instanceName: quartzScheduler
org.quartz.scheduler.instanceId = AUTO

org.quartz.scheduler.rmi.export: false
org.quartz.scheduler.rmi.proxy: false
org.quartz.scheduler.wrapJobExecutionInUserTransaction: false
#============================================================================
# Configure ThreadPool
#============================================================================
org.quartz.threadPool.class: org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount: 2
org.quartz.threadPool.threadPriority: 5
org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread: true

org.quartz.jobStore.misfireThreshold: 60000
#============================================================================
# Configure JobStore
#============================================================================
 
#default config
#org.quartz.jobStore.class: org.quartz.simpl.RAMJobStore
#\u6301\u4e45\u5316\u914d\u7f6e
org.quartz.jobStore.class:org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass:org.quartz.impl.jdbcjobstore.StdJDBCDelegate
org.quartz.jobStore.useProperties:true

#============================================================================
#havent cluster spring
#============================================================================
org.quartz.jobStore.isClustered = false  

#\u6570\u636e\u5e93\u8868\u524d\u7f00
org.quartz.jobStore.tablePrefix:qrtz_
#org.quartz.jobStore.dataSource:qzDS

#============================================================================
# Configure Datasources
#============================================================================
#JDBC\u9A71\u52A8  Sping\u53BB\u7BA1\u7406dataSource \uFF0C\u8FD9\u91CC\u4E0D\u5728\u914D\u7F6E\u6570\u636E\u6E90\u4FE1\u606F
#org.quartz.dataSource.qzDS.driver:com.mysql.jdbc.Driver
#org.quartz.dataSource.qzDS.URL:jdbc:mysql://localhost:3306/quartz_test
#org.quartz.dataSource.qzDS.user:root
#org.quartz.dataSource.qzDS.password:root
#org.quartz.dataSource.qzDS.maxConnection:10

猜你喜欢

转载自blog.csdn.net/aa46449521/article/details/79218066
今日推荐