1. 程式人生 > >定時器 獲取 service層

定時器 獲取 service層

application

<bean name="systemJob" class="org.springframework.scheduling.quartz.JobDetailBean">
        <property name="jobClass" value="class路徑" >
        </property>
    </bean>
    <bean id="systemTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
        <property name="jobDetail" ref="systemJob" />
        <property name="startDelay" value="10000" />
        <property name="repeatCount" value="0" />
    </bean>
    <bean id="schedulerFactoryBean" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="triggers">
            <list>
                <ref bean="systemTrigger" />
            </list>
        </property>
        <property name="schedulerContextAsMap">    
            <map>    
                <!-- spring 管理的service需要放到這裡,才能夠注入成功 -->  
                <description>schedulerContextAsMap</description>    
                <entry key="companyService" value-ref="companyService"/>    
            </map>    
        </property>    
        <property name="autoStartup" value="true"/>
        <property name="schedulerName" value="cronScheduler" />
    </bean>
java
public class SystemTimer implements Job {
	public void execute(JobExecutionContext context) {
      try {
     	 //獲取service  
     	 SchedulerContext skedCtx = context.getScheduler().getContext();    
    	 CompanyService companyService = (CompanyService)skedCtx.get("companyService");   
    	 List<Company> list= companyService.findAll();
    	 //得到所有company物件
    	 if(list!=null&&list.size()!=0){
    		 //如果存在就初始化系統引數
    		 SystemProperty.init(list.get(0));
    	 }
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}