我正在使用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并让它工作?我应该使用不同的弹簧和石英类吗?
请帮忙。