Я получаю следующую ошибку:
org.springframework.beans.factory.BeanCreationException
Ошибка создания компонента с именем 'job
', определенным в ресурсе пути к классу.Инстанцирование бина через фабричный метод не удалось.Не удалось создать экземпляр [org.springframework.batch.core.Job]:
Заводской метод 'job'
сгенерировал исключение com/java/BatchConfig.class
при попытке скомпилировать следующий фрагмент кода:
@Configuration
@EnableBatchProcessing
@EnableJpaRepositories(basePackageClasses = { TestRepository.class })
public class BatchConfig {
@Autowired
EntityManager entityManager;
@Autowired
private JobBuilderFactory jobs;
@Autowired
private StepBuilderFactory stepBuilderFactory;
@Bean
public Job job() {
return jobs.get("job")
.start(step1())
.build();
}
@Bean
public Step step1(){
return stepBuilderFactory.get("step1")
.<testPojo,testPojo>chunk(5)
.reader(xmlFileItemReader())
.processor(itemProcessor())
.writer(ItemWriter())
.build();
}
@Bean
public ItemReader<testPojo> xmlFileItemReader() {
StaxEventItemReader<testPojo> xmlFileReader = new
StaxEventItemReader<>();
xmlFileReader.setResource(new FileSystemResource("C:\\*.xml"));
xmlFileReader.setFragmentRootElementName("document");
Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
marshaller.setClassesToBeBound(testPojo.class);
marshaller.setMappedClass(testPojo.class);
xmlFileReader.setUnmarshaller(marshaller);
return xmlFileReader;
}
@Bean
public ItemProcessor itemProcessor() {
return new TestProcessor();
}
@Bean
public JpaItemWriter<testDTO> customerItemWriter()
{
JpaItemWriter<testDTO> writer = new JpaItemWriter<>();
writer.setEntityManagerFactory(entityManager.getEntityManagerFactory());
return writer;
}
}
TestProcessor.java
public class TestProcessor implements ItemProcessor<TestPojo, TestDTO> {
private static final Logger log =
LoggerFactory.getLogger(TestProcessor.class);
@Override
public TestDTO process(final TestPojo npojo) throws Exception {
final TestDTO sndto = new TestDTO();
ndto.setMaster_object_name(npojo.getMaster_object());
ndto.setFull_title(npojo.getFull_title());
ndto.setAction_expiry_date(npojo.getAction_expiry());
ndto.setAction_objective(npojo.getAction_objective());
ndto.setRecommended_action(npojo.getRecommended_action());
return ndto;
}
}
Spring Boot class:
@SpringBootApplication
@EnableBatchProcessing
public class TestApplication {
public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}
}
Pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-batch</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>