2017-06-22 23 views
0

作業1在org.eko.BusinessJobs.Job1.doPerform(Job1.java:23) 在org.eko.jobs.BusinessJobA.executeInternal(BusinessJobA.java:34表演 ) at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:75) at org.quartz.core.JobRunShell.run(JobRunShell.java:202) at org.quartz.simpl.SimpleThreadPool $ WorkerThread .run(SimpleThreadPool.java:573) [Thu Jun 22 14:07:07 IST 2017]你好,來自Quartz!空石英作業無法使用Spring JpaRepository功能

<?xml version="1.0" encoding="UTF-8"?> 
 
<beans xmlns="http://www.springframework.org/schema/beans" 
 
\t xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 
\t xmlns:context="http://www.springframework.org/schema/context" 
 
\t xmlns:jdbc="http://www.springframework.org/schema/jdbc" 
 
\t xmlns:tx="http://www.springframework.org/schema/tx" 
 
\t xmlns:jpa="http://www.springframework.org/schema/data/jpa" 
 
\t xmlns:util="http://www.springframework.org/schema/util" 
 
\t xmlns:task="http://www.springframework.org/schema/task" 
 
\t xsi:schemaLocation="http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.3.xsd 
 
\t \t http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.3.xsd 
 
\t \t http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
 
\t \t http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd 
 
\t \t http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.8.xsd 
 
\t \t http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd 
 
\t \t http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.3.xsd"> 
 

 
\t <context:component-scan base-package="org.eko"> 
 
\t \t <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/> 
 
\t </context:component-scan> 
 
\t 
 
\t <jpa:repositories base-package="org.eko.repository" /> 
 
\t 
 
\t <task:annotation-driven/> 
 

 
\t <bean class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" 
 
\t \t id="entityManagerFactory"> 
 
\t \t <property name="packagesToScan" value="org.eko.entity" /> 
 
\t \t <property name="dataSource" ref="dataSource" /> 
 
\t \t <property name="jpaProperties"> 
 
\t \t \t <props> 
 
\t \t \t \t <prop key="hibernate.show_sql">true</prop> 
 
\t \t \t \t <prop key="hibernate.hbm2ddl.auto">update</prop> 
 
\t \t \t </props> 
 
\t \t </property> 
 
\t \t <property name="persistenceProvider"> 
 
\t \t \t <bean class="org.hibernate.jpa.HibernatePersistenceProvider" /> 
 
\t \t </property> 
 
\t </bean> \t 
 
    
 
    <!-- 
 
    
 
    \t <bean id="dataSource" class = "org.springframework.jdbc.datasource.DriverManagerDataSource"> 
 
     <property name = "driverClassName" value = "com.mysql.jdbc.Driver"/> 
 
     <property name = "url" value = "jdbc:mysql://localhost:3306/Simpli_bank_Scheduler"/> 
 
     <property name = "username" value = "root"/> 
 
     <property name = "password" value = "1234"/> 
 
    </bean> 
 
    
 
    --> 
 
    
 
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> 
 
    \t <!-- Connection properties --> 
 
    \t <property name="driverClass" value="com.mysql.jdbc.Driver" /> 
 
    \t <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/Simpli_bank_Scheduler" /> 
 
    \t <property name="user" value="root" /> 
 
    \t <property name="password" value="1234" /> 
 
    \t 
 
    \t <!-- Pool properties --> 
 
    \t <property name="minPoolSize" value="5" /> 
 
    \t <property name="maxPoolSize" value="200" /> 
 
    \t <property name="acquireIncrement" value="1" /> 
 
    \t <property name="maxStatements" value="500" /> 
 
    \t <property name="idleConnectionTestPeriod" value="3000" /> 
 
    \t <property name="loginTimeout" value="300" /> 
 
    \t </bean> 
 
    
 
    \t <tx:annotation-driven transaction-manager="transactionManager" /> 
 
\t <bean class="org.springframework.orm.jpa.JpaTransactionManager" \t id="transactionManager"> 
 
\t \t <property name="dataSource" ref="dataSource" /> 
 
\t </bean> 
 
<!-- \t 
 
\t <bean id="Job1" class="org.eko.jobs.BusinessJobA"> 
 
    \t <property name="sessionFactory" ref="sessionFactory"> </property> 
 
\t </bean> 
 
\t 
 
\t <bean name="BusinessJobA" class="org.springframework.scheduling.quartz.JobDetailFactoryBean"> 
 
     <property name="jobClass"> 
 
      <bean factory-bean="Job1" factory-method="setJob1"></bean> 
 
     </property> 
 
\t </bean> 
 
\t 
 
    \t <bean id="BusinessJobA" class="org.eko.jobs.BusinessJobA" /> 
 

 
    \t <bean id="quartzJobFactory" class="org.eko.configuration.AutowiringSpringBeanJobFactory"> 
 
    \t <property name="ignoredUnknownProperties" value="applicationContext"/> 
 
\t </bean>  
 

 
\t <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 
 
    \t <property name="dataSource" ref="dataSource"/> 
 
    \t <property name="transactionManager" ref="transactionManager"/> 
 
    \t <property name="jobFactory" ref="quartzJobFactory"/> 
 
\t \t <property name="overwriteExistingJobs" value="true"/> 
 
    
 
    \t <property name="autoStartup" value="true" /> 
 
    \t <property name="schedulerName" value="quartzScheduler"/> 
 
    \t <property name="applicationContextSchedulerContextKey" value="applicationContext"/> 
 
\t  <property name="waitForJobsToCompleteOnShutdown" value="false"/> 
 
\t  <property name="configLocation" value="classpath:quartz.properties" /> 
 
    \t <property name="quartzProperties"> 
 
     <props> 
 
      <prop key="org.quartz.jobStore.misfireThreshold">60000</prop> 
 
      <prop key="org.quartz.threadPool.threadCount">50</prop> 
 
      <prop key="org.quartz.scheduler.instanceName">AUTO</prop> 
 
      <prop key="org.quartz.scheduler.instanceId">AUTO</prop> 
 
      <prop key="org.quartz.scheduler.skipUpdateCheck">true</prop> 
 
      <prop key="org.quartz.jobStore.class">org.quartz.impl.jdbcjobstore.JobStoreTX</prop> 
 
      <prop key="org.quartz.threadPool.class">org.quartz.simpl.SimpleThreadPool</prop> 
 
     </props> 
 
    </property> 
 
</bean> 
 

 
<bean id="BusinessObjectA" class="org.springframework.scheduling.quartz.JobDetailFactoryBean"> 
 
    <property name="jobClass" value="org.eko.jobs.BusinessJobA"/> 
 
</bean> 
 

 
<bean id="BusinessObjectB" class="org.springframework.scheduling.quartz.JobDetailFactoryBean"> 
 
    <property name="jobClass" value="org.eko.jobs.BusinessJobB"/> 
 
</bean> 
 

 
<bean id="BusinessObjectC" class="org.springframework.scheduling.quartz.JobDetailFactoryBean"> 
 
    <property name="jobClass" value="org.eko.jobs.BusinessJobC"/> 
 
</bean> 
 

 
<bean id="BusinessObjectD" class="org.springframework.scheduling.quartz.JobDetailFactoryBean"> 
 
    <property name="jobClass" value="org.eko.jobs.BusinessJobD"/> 
 
</bean> 
 
--> 
 
<!-- 
 
<bean name="businessJobA" class="org.springframework.scheduling.quartz.JobDetailFactoryBean"> 
 
    <property name="jobClass" value="org.eko.jobs.BusinessJobA"/> 
 
    <property name="group" value="Group1"/> 
 
</bean> 
 

 
<task:annotation-driven/> 
 

 
<bean id="businessJobA" class="org.springframework.scheduling.quartz.JobDetailFactoryBean"> 
 
    <property name="jobClass" value="org.eko.jobs.BusinessJobA"/> 
 
    <property name="jobDataAsMap"> 
 
    <map> 
 
     <entry key="name" value="Job1"/> 
 
    </map> 
 
    </property> 
 
    <property name="durability" value="true"/> 
 
</bean> 
 

 
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> 
 
    <property name="jobDetail" ref="businessJobA" /> 
 
    <property name="cronExpression" value="0/2 * * * * ?"/> 
 
</bean> 
 
    
 
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 
 
    <property name="jobDetails"> 
 
    <list> 
 
     <ref bean="businessJobA" /> 
 
    </list> 
 
    </property> 
 
    <property name="triggers"> 
 
    <list> 
 
     <ref bean="cronTrigger" /> 
 
    </list> 
 
    </property> 
 
</bean> --> 
 
    
 
<bean id="job1" class="org.eko.BusinessJobs.Job1"/> 
 
<bean id="job2" class="org.eko.BusinessJobs.Job2"/> 
 
<bean id="job3" class="org.eko.BusinessJobs.Job3"/> 
 
<bean id="job4" class="org.eko.BusinessJobs.Job4"/> 
 
    
 
<bean id="job1job" class = "org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> 
 
    <property name="targetObject" ref="job1"/> 
 
    <property name="targetMethod" value="doPerform"/> 
 
</bean> 
 
    
 
<bean id="job2job" class = "org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> 
 
    <property name="targetObject" ref="job2"/> 
 
    <property name="targetMethod" value="doPerform"/> 
 
</bean> 
 
    
 
<bean id="job3job" class = "org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> 
 
    <property name="targetObject" ref="job3"/> 
 
    <property name="targetMethod" value="doPerform"/> 
 
</bean> 
 
    
 
<bean id="job4job" class = "org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> 
 
    <property name="targetObject" ref="job4"/> 
 
    <property name="targetMethod" value="doPerform"/> 
 
</bean> 
 

 
<bean id="simpleTrigger1" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean"> 
 
    <property name="jobDetail" ref="job1job" /> 
 
    <property name="repeatInterval" value="5000" /> 
 
    <property name="startDelay" value="1000" /> 
 
    <property name="repeatCount" value="5" /> 
 
</bean> 
 
    
 
<bean id="simpleTrigger2" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean"> 
 
    <property name="jobDetail" ref="job2job" /> 
 
    <property name="repeatInterval" value="5000" /> 
 
    <property name="startDelay" value="1000" /> 
 
    <property name="repeatCount" value="5" /> 
 
</bean> 
 
    
 
<bean id="simpleTrigger3" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean"> 
 
    <property name="jobDetail" ref="job3job" /> 
 
    <property name="repeatInterval" value="5000" /> 
 
    <property name="startDelay" value="1000" /> 
 
    <property name="repeatCount" value="5" /> 
 
</bean> 
 
    
 
<bean id="simpleTrigger4" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean"> 
 
    <property name="jobDetail" ref="job4job" /> 
 
    <property name="repeatInterval" value="5000" /> 
 
    <property name="startDelay" value="1000" /> 
 
    <property name="repeatCount" value="5" /> 
 
</bean> 
 
    
 
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 
 
    <property name="jobDetails"> 
 
    <list> 
 
     <ref bean="job1job" /> 
 
     <ref bean="job2job" /> 
 
     <ref bean="job3job" /> 
 
     <ref bean="job4job" /> 
 
    </list> 
 
    </property> 
 
    <property name="triggers"> 
 
    <list> 
 
     <ref bean="simpleTrigger1" /> 
 
     <ref bean="simpleTrigger2" /> 
 
     <ref bean="simpleTrigger3" /> 
 
     <ref bean="simpleTrigger4" /> 
 
    </list> 
 
    </property> 
 
</bean> 
 
</beans>

package org.eko.jobs; 
 

 
import java.util.Date; 
 

 
import org.eko.BusinessJobs.Job1; 
 
import org.quartz.DisallowConcurrentExecution; 
 
import org.quartz.JobExecutionContext; 
 
import org.quartz.JobExecutionException; 
 
import org.springframework.scheduling.quartz.QuartzJobBean; 
 
import org.springframework.stereotype.Component; 
 
import org.springframework.web.context.support.SpringBeanAutowiringSupport; 
 

 

 
@Component 
 
@DisallowConcurrentExecution 
 
public class BusinessJobA extends QuartzJobBean 
 
{ 
 
\t public static int REPEATINTERVALINMILLISECONDS=2000; 
 
\t public static int REPEATCOUNT=20; 
 
\t 
 
\t Job1 job1=new Job1(); 
 

 
\t @Override 
 
\t protected void executeInternal(JobExecutionContext arg0) throws JobExecutionException { 
 
\t \t 
 
\t \t SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this); 
 
\t \t 
 
\t \t String name = arg0.getMergedJobDataMap().getString("name"); 
 
     System.out.println("[" + new Date() + "] Hello from Quartz! " + name); 
 
\t \t 
 
\t \t System.out.println("Executing Business Object A"); 
 
\t \t try 
 
\t \t { 
 
\t \t \t job1.doPerform(); 
 
\t \t } 
 
\t \t catch (Exception e) { 
 
\t \t \t e.printStackTrace(); 
 
\t \t } 
 
\t } 
 
}

package org.eko.BusinessJobs; 
 

 
import java.util.List; 
 

 
import org.eko.entity.SimpliJob; 
 
import org.eko.repository.SimpliJobRepository; 
 
import org.springframework.beans.factory.annotation.Autowired; 
 
import org.springframework.data.domain.Sort; 
 
import org.springframework.stereotype.Service; 
 

 
@Service 
 
public class Job1 { 
 

 
\t @Autowired 
 
\t private SimpliJobRepository simpliJobRepository; 
 
\t 
 
\t public void doPerform() 
 
\t { 
 
\t \t System.out.println("\nJob1 Performing"); 
 
\t \t 
 
\t \t Sort sortID=new Sort(new Sort.Order(Sort.Direction.DESC,"id")); 
 
\t \t 
 
\t \t List<SimpliJob> jobsDescID=simpliJobRepository.findAll(sortID); 
 
\t \t for (SimpliJob simpliJob : jobsDescID) { 
 
\t \t \t System.out.println(simpliJob); 
 
\t \t } 
 
\t \t System.out.println("\nJob1 Done\n"); 
 
\t } 
 
}

package org.eko.controller; 
 

 
import java.util.Calendar; 
 

 
import org.eko.entity.SimpliJob; 
 
import org.eko.jobs.BusinessJobA; 
 
import org.eko.jobs.BusinessJobB; 
 
import org.eko.jobs.BusinessJobC; 
 
import org.eko.jobs.BusinessJobD; 
 
import org.eko.repository.SimpliJobRepository; 
 
import org.eko.service.InitDbService; 
 
import org.quartz.DateBuilder; 
 
import org.quartz.JobBuilder; 
 
import org.quartz.JobDetail; 
 
import org.quartz.Scheduler; 
 
import org.quartz.SchedulerException; 
 
import org.quartz.SimpleScheduleBuilder; 
 
import org.quartz.Trigger; 
 
import org.quartz.TriggerBuilder; 
 
import org.quartz.impl.StdSchedulerFactory; 
 
import org.springframework.beans.factory.annotation.Autowired; 
 
import org.springframework.stereotype.Controller; 
 

 
@Controller 
 
public class QuartzSchedulerController { 
 
\t 
 
\t JobDetail jobDetail1; 
 
\t JobDetail jobDetail2; 
 
\t JobDetail jobDetail3; 
 
\t JobDetail jobDetail4; 
 
\t Trigger trigger1; 
 
\t Trigger trigger2; 
 
\t Trigger trigger3; 
 
\t Trigger trigger4; 
 
\t Scheduler scheduler; 
 
\t 
 
\t @Autowired 
 
\t private SimpliJobRepository simpliJobRepository; 
 
\t 
 
\t public void scheduleJob(SimpliJob simpliJob) throws SchedulerException 
 
\t { 
 
\t \t scheduler=new StdSchedulerFactory().getScheduler(); 
 
\t \t if(simpliJob.getStatus()==1){ 
 
\t \t if(simpliJob.getId()==1) 
 
\t \t { 
 
\t \t \t jobDetail1=JobBuilder.newJob(BusinessJobA.class).withIdentity(simpliJob.getName(),simpliJob.getSimpliGroup()).build(); 
 
\t \t \t trigger1=(Trigger) TriggerBuilder.newTrigger().withIdentity("Trigger1",simpliJob.getSimpliGroup()).startAt(DateBuilder.dateOf(simpliJob.getStartTime().get(Calendar.HOUR_OF_DAY), simpliJob.getStartTime().get(Calendar.MINUTE), simpliJob.getStartTime().get(Calendar.SECOND), simpliJob.getStartTime().get(Calendar.DAY_OF_MONTH),simpliJob.getStartTime().get(Calendar.MONTH)+1,simpliJob.getStartTime().get(Calendar.YEAR))).withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInMilliseconds(BusinessJobA.REPEATINTERVALINMILLISECONDS).withRepeatCount(BusinessJobA.REPEATCOUNT)).forJob(jobDetail1).build(); 
 
\t \t \t scheduler.scheduleJob(jobDetail1,trigger1); 
 
\t \t \t System.out.println("BusinessObjectA Scheduled!"); 
 
\t \t } 
 
\t \t if(simpliJob.getId()==2) 
 
\t \t { 
 
\t \t \t jobDetail2=JobBuilder.newJob(BusinessJobB.class).withIdentity(simpliJob.getName(),simpliJob.getSimpliGroup()).build(); 
 
\t \t \t trigger2=(Trigger) TriggerBuilder.newTrigger().withIdentity("Trigger2",simpliJob.getSimpliGroup()).startAt(DateBuilder.dateOf(simpliJob.getStartTime().get(Calendar.HOUR_OF_DAY), simpliJob.getStartTime().get(Calendar.MINUTE), simpliJob.getStartTime().get(Calendar.SECOND), simpliJob.getStartTime().get(Calendar.DAY_OF_MONTH),simpliJob.getStartTime().get(Calendar.MONTH)+1,simpliJob.getStartTime().get(Calendar.YEAR))).withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInMilliseconds(BusinessJobB.REPEATINTERVALINMILLISECONDS).withRepeatCount(BusinessJobB.REPEATCOUNT)).forJob(jobDetail2).build(); 
 
\t \t \t scheduler.scheduleJob(jobDetail2,trigger2); 
 
\t \t \t System.out.println("BusinessObjectB Scheduled!"); 
 
\t \t } 
 
\t \t if(simpliJob.getId()==3) 
 
\t \t { 
 
\t \t \t jobDetail3=JobBuilder.newJob(BusinessJobC.class).withIdentity(simpliJob.getName(),simpliJob.getSimpliGroup()).build(); 
 
\t \t \t trigger3=(Trigger) TriggerBuilder.newTrigger().withIdentity("Trigger3",simpliJob.getSimpliGroup()).startAt(DateBuilder.dateOf(simpliJob.getStartTime().get(Calendar.HOUR_OF_DAY), simpliJob.getStartTime().get(Calendar.MINUTE), simpliJob.getStartTime().get(Calendar.SECOND), simpliJob.getStartTime().get(Calendar.DAY_OF_MONTH),simpliJob.getStartTime().get(Calendar.MONTH)+1,simpliJob.getStartTime().get(Calendar.YEAR))).withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInMilliseconds(BusinessJobC.REPEATINTERVALINMILLISECONDS).withRepeatCount(BusinessJobC.REPEATCOUNT)).forJob(jobDetail3).build(); 
 
\t \t \t scheduler.scheduleJob(jobDetail3,trigger3); 
 
\t \t \t System.out.println("BusinessObjectC Scheduled!"); 
 
\t \t } 
 
\t \t if(simpliJob.getId()==4) 
 
\t \t { 
 
\t \t \t jobDetail4=JobBuilder.newJob(BusinessJobD.class).withIdentity(simpliJob.getName(),simpliJob.getSimpliGroup()).build(); 
 
\t \t \t trigger4=(Trigger) TriggerBuilder.newTrigger().withIdentity("Trigger4",simpliJob.getSimpliGroup()).startAt(DateBuilder.dateOf(simpliJob.getStartTime().get(Calendar.HOUR_OF_DAY), simpliJob.getStartTime().get(Calendar.MINUTE), simpliJob.getStartTime().get(Calendar.SECOND), simpliJob.getStartTime().get(Calendar.DAY_OF_MONTH),simpliJob.getStartTime().get(Calendar.MONTH)+1,simpliJob.getStartTime().get(Calendar.YEAR))).withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInMilliseconds(BusinessJobD.REPEATINTERVALINMILLISECONDS).withRepeatCount(BusinessJobD.REPEATCOUNT)).forJob(jobDetail4).build(); 
 
\t \t \t scheduler.scheduleJob(jobDetail4,trigger4); 
 
\t \t \t System.out.println("BusinessObjectD Scheduled!"); 
 
\t \t } 
 
\t \t simpliJob.setStatus(2); 
 
\t \t simpliJobRepository.save(simpliJob); 
 
\t \t } 
 
\t \t else 
 
\t \t { 
 
\t \t \t System.err.println("Job Already Scheduled!"); 
 
\t \t } 
 
\t \t scheduler.start(); 
 
\t } 
 
\t 
 
\t public void unscheduleJob(SimpliJob simpliJob) throws SchedulerException 
 
\t { 
 
\t \t if(simpliJob.getStatus()==2){ 
 
\t \t if(simpliJob.getId()==1) 
 
\t \t { 
 
\t \t \t scheduler.unscheduleJob(trigger1.getKey()); 
 
\t \t \t System.out.println("BusinessObjectA descheduled!"); 
 
\t \t } 
 
\t \t if(simpliJob.getId()==2) 
 
\t \t { 
 
\t \t \t scheduler.unscheduleJob(trigger2.getKey()); 
 
\t \t \t System.out.println("BusinessObjectB descheduled!"); 
 
\t \t } 
 
\t \t if(simpliJob.getId()==3) 
 
\t \t { 
 
\t \t \t scheduler.unscheduleJob(trigger3.getKey()); 
 
\t \t \t System.out.println("BusinessObjectC descheduled!"); 
 
\t \t } 
 
\t \t if(simpliJob.getId()==4) 
 
\t \t { 
 
\t \t \t scheduler.unscheduleJob(trigger4.getKey()); 
 
\t \t \t System.out.println("BusinessObjectD descheduled!"); 
 
\t \t } 
 
\t \t simpliJob.setStatus(1); 
 
\t \t simpliJobRepository.save(simpliJob); 
 
\t \t } 
 
\t \t else 
 
\t \t { 
 
\t \t \t System.err.println("Job Not Scheduled!"); 
 
\t \t } 
 
\t } 
 
}

回答

0

你手動創建自己的工作,而不是豆注射吧。這裏是你應該怎麼做這個:

@Component 
@DisallowConcurrentExecution 
public class BusinessJobA extends QuartzJobBean 
{ 

    @Autowired 
    private Job1 job1; 

    /* ... */ 

} 

而且你沒有設置任何工作數據,當您創建它,嘗試使用這樣的:

JobBuilder 
    .newJob(BusinessJobD.class) 
    .withIdentity(simpliJob.getName(),simpliJob.getSimpliGroup()) 
    .usingJobData("name", "some name") 
    .build(); 
+0

我已經試過了,但效果都一樣 –