L'essenza è che il framework di test Spring Batch (v2) ha JobLauncherTestUtils.setJob
con un'annotazione @Autowired
. La nostra suite di test ha più provider di classe Job
. Dal momento che questa classe non è qualcosa che posso modificare, non sono sicuro di sapere qual è il lavoro con cui viene eseguito l'autowiring, che potrebbe essere diverso per test.Come posso qualificare un setter autoagulato che non "proprietario"
STDOUT [WARN ] [2015.04.15 11:14:42] support.GenericApplicationContext - Exception encountered during context initialization - cancelling refresh attempt
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jobLauncherTestUtilsForSnapshot': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire method: public void org.springframework.batch.test.JobLauncherTestUtils.setJob(org.springframework.batch.core.Job); nested exception is org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type [org.springframework.batch.core.Job] is defined: expected single matching bean but found 2: coverageRuleBatch,generateMetricsSnapshotJob
Ho provato ad aggiungere questa JavaConfig che è riconosciuto, ma l'errore dice che è ancora autocalling setJob
@Configuration
public class SpringTestConfiguration
{
@Bean
public JobLauncherTestUtils jobLauncherTestUtilsForSnapshot(final Job generateMetricsSnapshotJob)
{
JobLauncherTestUtils jobLauncherTestUtils = new JobLauncherTestUtils();
jobLauncherTestUtils.setJob(generateMetricsSnapshotJob);
return jobLauncherTestUtils;
}
}
nota: Non ho bisogno di una soluzione JavaConfig, ma sarebbe bello . Inoltre, mi piacerebbe, se possibile, continuare a pubblicare campi come JobRepository, poiché ce n'è uno solo.
http://stackoverflow.com/q/22416140/206466 correlati, forse duplicati – xenoterracide