2017-02-20 2 views
0

Quartz Job에서 내 응용 프로그램의 원래 컨텍스트에 액세스하는 방법을 모른다.QuartzJob에서 내 응용 프로그램 컨텍스트에 액세스하십시오.

내 석영 작업 빈의 속성으로 DAO 빈을 주입하기 위해 노력하고 있기 때문에 두 컨텍스트가 전달되지 않는 것을 볼 수 있습니다 나는이 오류를 얻을 :

No such bean named: "the DAO bean that I am trying to inject as a property".

을를 사용하는 방법은 없나요 내 QuartzJob의 DAO?

+1

팁 : 영어로 의사 소통 할 때 영어 약자를 사용하십시오. 그렇지 않으면 사람들이 궁금해하는 사람들이 있습니다. OAD가 귀하의 질문에 대답하는 대신에 있습니다. – walen

+1

[Quartz로 Hibernate 세션 사용하기] (http://stackoverflow.com/questions/4446103/using-hibernate-session-with-quartz) –

답변

0

(OP를 대신하여 게시 됨).

해결 방법 : 응용 프로그램의 .XML의 맥락에서

public class SchedulerJob extends QuartzJobBean { 
public void executeInternal(JobExecutionContext context) 
     throws JobExecutionException { 
    try{ 
     <YOUR_BEAN_DAO_INTERFACE_OBJECT> = ((ApplicationContext) context.getJobDetail().getJobDataMap().get("applicationContext")).get("<YOUR_BEAN_DAO_INTERFACE_ID>"); 
    } catch (Exception e){ 
     e.printStackTrace(); 
     return; 
    } 
} 
} 

:이에 <YOUR_BEAN_DAO_INTERFACE>을 선언 할 필요가있다 작업에

(인터페이스를 얻기 위해 필수입니다) 빈으로 된 XML :

<!-- Spring Quartz Scheduler job --> 
<bean name="schedulerJob" class="org.springframework.scheduling.quartz.JobDetailBean"> 
    <property name="jobClass" value="<PATH_OF_YOUR_CLASS_JOB>.SchedulerJob" /> 
    <property name="applicationContextJobDataKey" value="applicationContext" /> 
</bean> 

<!-- Cron Trigger, run every 10 seconds --> 
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> 
    <property name="jobDetail" ref="schedulerJob" /> 
    <property name="cronExpression" value="0/10 * * * * ?" /> 
</bean> 

<!-- DI --> 
<bean id="scheduler" 
    class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 
    <property name="jobDetails"> 
     <list> 
      <ref bean="schedulerJob" /> 
     </list> 
    </property> 

    <property name="triggers"> 
     <list> 
      <ref bean="cronTrigger" /> 
     </list> 
    </property> 
</bean>