2016-03-16 83 views
0

我和春天有個批次和春季啓動春天批量配置

這裏的一個問題是我jobs.xml

<!-- stored job-meta in database --> 
<bean id="jobRepository" 
     class="org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean"> 
    <property name="transactionManager" ref="jobTransactionManager" /> 
</bean> 

<bean id="jobLauncher" 
     class="org.springframework.batch.core.launch.support.SimpleJobLauncher"> 
    <property name="jobRepository" ref="jobRepository" /> 
</bean> 


<bean id="dummyTask" class="ch.autexis.DummyTask"/> 

<!-- define a job with multiple tasks/steps --> 
<batch:job id="MESaaSConnectorJob" restartable="true"> 
    <batch:step id="job_1" allow-start-if-complete="true"> 
     <tasklet ref="dummyTask" /> 
    </batch:step> 
</batch:job> 

<!-- runner executes the job --> 
<bean id="MESaaS_sensor_runner" class="ch.autexis.RunScheduler"> 
    <property name="job" ref="MESaaSConnectorJob" /> 
    <property name="launcher" ref="jobLauncher" /> 
</bean> 

這裏是我的Runscheduler:

@Component 
public class RunScheduler { 

private JobLauncher launcher; 
private Job job; 

public void run() { 

    try { 

     String dateParam = new Date().toString(); 
     JobParameters param = 
       new JobParametersBuilder().addString("date", dateParam).toJobParameters(); 

     System.out.println(dateParam); 

     JobExecution execution = launcher.run(job, param); 
     long duration = execution.getEndTime().getTime() - execution.getStartTime().getTime(); 
     System.out.println("Job:" + job.getName() + " ended with status " + execution.getStatus().toString() 
       + " and duration of " + duration + "ms"); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

} 

public JobLauncher getLauncher() { 
    return launcher; 
} 

public void setLauncher(JobLauncher launcher) { 
    this.launcher = launcher; 
} 

public Job getJob() { 
    return job; 
} 

public void setJob(Job job) { 
    this.job = job; 
} 
} 

這是DummyTask:

import org.springframework.batch.core.StepContribution; 
import org.springframework.batch.core.scope.context.ChunkContext; 
import org.springframework.batch.core.step.tasklet.Tasklet; 
import org.springframework.batch.repeat.RepeatStatus; 

public class DummyTask implements Tasklet { 

@Override 
public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception { 
    System.out.println("Dummy - Task executed"); 
    return RepeatStatus.FINISHED; 
} 

} 

這裏是我的堆棧跟蹤:

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'jobOperator' defined in class path resource [org/springframework/boot/autoconfigure/batch/BatchAutoConfiguration.class]: Unsatisfied dependency expressed through constructor argument with index 2 of type [org.springframework.batch.core.configuration.ListableJobLocator]: No qualifying bean of type [org.springframework.batch.core.configuration.ListableJobLocator] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.batch.core.configuration.ListableJobLocator] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {} 
    at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:749) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE] 
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:464) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1123) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1018) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:510) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE] 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE] 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE] 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE] 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE] 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:772) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE] 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:839) ~[spring-context-4.2.5.RELEASE.jar:4.2.5.RELEASE] 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:538) ~[spring-context-4.2.5.RELEASE.jar:4.2.5.RELEASE] 
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:766) [spring-boot-1.3.3.RELEASE.jar:1.3.3.RELEASE] 
    at org.springframework.boot.SpringApplication.createAndRefreshContext(SpringApplication.java:361) [spring-boot-1.3.3.RELEASE.jar:1.3.3.RELEASE] 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:307) [spring-boot-1.3.3.RELEASE.jar:1.3.3.RELEASE] 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1191) [spring-boot-1.3.3.RELEASE.jar:1.3.3.RELEASE] 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1180) [spring-boot-1.3.3.RELEASE.jar:1.3.3.RELEASE] 
    at ch.autexis.BatchApplication.main(BatchApplication.java:26) [classes/:na] 
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.batch.core.configuration.ListableJobLocator] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {} 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1373) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE] 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1119) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE] 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1014) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE] 
    at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:813) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE] 
    at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE] 
    ... 18 common frames omitted 

你有,爲什麼不能創建jobOperator豆什麼想法?

感謝您的幫助

+0

我想你想自動裝配在'ch.autexis.RunScheduler'豆是不是有春天背景.attach你的帖子中的'ch.autexis.RunScheduler'類獲得更多信息,如果你有自動佈線'@Autowired \t @Qualifier(「jobOperator」) \t private Job job;'你在bean限定符中給出了一個錯誤的名字。 MESaaSConnectorJob'代替'jobOperator' –

+0

我將RunScheduler加到了我的問題中 –

回答

0

Spring可以找到它的context.You工作必須使用豆ID預選賽並注入到你的類。你有你的自動裝配作業像

@Autowired 
    @Qualifier("MESaaSConnectorJob") 
    private Job job; 

對於jobLauncher將採取默認的Spring bean名convention.For例如JobLauncherjobLauncher。你不需要對任何@Qualifier

+0

當我自動裝配時它仍然是一樣的錯誤工作。 錯誤來自「jobOperator」UnsatisfiedDependencyException –

+0

後''DummyTask'類也可能有一些依賴關係是缺少的。 –

+0

添加了DummyTask –

1

使用你的應用程序類以下標註讀取XML配置:

@SpringBootApplication 
@ImportResource("applicationContext.xml")