弹簧石英通属性数据源

时间:2017-05-21 17:20:58

标签: spring quartz-scheduler

我正在使用Spring,Quartz,Maven构建调度程序应用程序。 (第一次做)。

调度程序应连接到应用程序数据库并根据业务逻辑更新少量记录。

现在,业务逻辑就绪,应用程序运行正常,没有调度程序。

在尝试将spring与quartz结合时,我对如何传递像datasource这样的属性感到困惑。

以下是我的文件(配置)。

public class AppMain {
public static void main(String args[]){
    AbstractApplicationContext context = new  ClassPathXmlApplicationContext("quartz-context.xml");}

quartz-spring.xml看起来像

<bean id="externalRequestService" class="com.abc.schedulers.service.ExternalEducationServiceImpl">
    <property name="dataSource" ref="eduDataSource" />
</bean>

<bean name="myJobDetail"
    class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
    <property name="jobClass" value="com.abc.schedulers.myJob" />
    <property name="jobDataMap">
        <map>
            <entry key="externalRequestService" value-ref="externalRequestService" />
            <entry key="mailService" value-ref="mailService" />
        </map>
    </property>
    <property name="durability" value="true" />
</bean>

玉米触发器

<bean id="cronTrigger"
    class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
    <property name="jobDetail" ref="myJobDetail" />
    <property name="cronExpression" value="0 0/5 21 * * ?" />
</bean>

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="jobDetails">
        <list>
            <ref bean="myJobDetail" />
        </list>
    </property>
    <property name="triggers">
        <list>
            <ref bean="cronTrigger" />
        </list>
    </property>
</bean>

现在,当我运行AppMain.java代码时。

public class myJob extends QuartzJobBean{

private MailService mailService = null;

private ExternalEducationServiceImpl externalRequestService = null;

@Override
protected void executeInternal(JobExecutionContext arg0)
        throws JobExecutionException {
    startEducationScheduler();
}

public void startEducationScheduler() {
    //IMailService mailService = context.getBean("mailService", MailService.class);
    mailService.sendMailToTeamBeforeAgentStart();
    System.out.println("I am here tooo.............");
    List<UserEducation> requestsWithUserEducation = externalRequestService.getUserEducationInformation();
    System.out.println("I am here tooo.222222222............");

}

调度程序一直工作到第34行;我在这里太过............&#34;但在那之后它不起作用。

发现行为是因为在quartz-spring.xml即dataasource中传递给externalRequestService的属性值。而且,没有属性传递,调度程序工作正常。

请问如何在quartz-spring.xml中将如datasource这样的属性传递给externalRequestService并让它工作?我应该使用不同的弹簧和石英类吗?

请帮忙。

0 个答案:

没有答案