• quartz 的job中获取到applicationContext


    第一步:
    定义SchedulerFactoryBean的applicationContextSchedulerContextKey
    <bean name="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" >
                    <!-- 注入数据源 -->  
    		<property name="dataSource">  
    			<ref bean="dataSource" />  
    		</property>
                    <!-- 延迟30秒启动Scheduler -->  
    		<property name="startupDelay" value="30"></property>
                    <!-- 通过applicationContextSchedulerContextKey属性配置spring上下文 -->  
    		<property name="applicationContextSchedulerContextKey">  
    			<value>applicationContext</value>  
    		</property> 
    </bean>
     
    定义之后,产生的效果是:
    this.scheduler.getContext().put(this.applicationContextSchedulerContextKey, this.applicationContext);
    第二步:
    获取到scheduler,然后从中取出applicationContext 即可
    public class TestJob extends QuartzJobBean {
    
    	@Override
    	protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
    		Scheduler scheduler = (Scheduler) context.getScheduler();  
    		//获取JobExecutionContext中的service对象  
                   try {
                            //获取JobExecutionContext中的service对象 
    			SchedulerContext schCtx = context.getScheduler().getContext();
                            //获取Spring中的上下文  
    			ApplicationContext appCtx = (ApplicationContext)schCtx.get("applicationContext");
    			jobService= (JobService)appCtx.getBean("jobService");
    			....
    		} catch (SchedulerException e1) {
    			// TODO 尚未处理异常
    			e1.printStackTrace();
    		} 
    	} 
    };


     
  • 相关阅读:
    远程接入系统的问题
    FastReport
    通用FASTREPORT打印模块及接口方法
    cxGrid控件过滤筛选后如何获更新筛选后的数据集
    Oracle Data Integrator 12c (12.1.2)新特性
    ODI 12c 安装
    Kafka面试题
    Hadoop面试题
    Spark面试题
    JAVA面试题-数组字符串基础
  • 原文地址:https://www.cnblogs.com/beiyeren/p/3473650.html
Copyright © 2020-2023  润新知