Java 计划作业不存在';别再跑了
我有一个spring批处理项目,代码如下:Java 计划作业不存在';别再跑了,java,spring,spring-batch,Java,Spring,Spring Batch,我有一个spring批处理项目,代码如下: @Scheduled(fixedRate = 5000) public Job xmlJob() throws Exception { return jobBuilderFactory .get("XMLjob") .start(stepBuilderFactory.get("XML") .<Person, Pe
@Scheduled(fixedRate = 5000)
public Job xmlJob() throws Exception {
return jobBuilderFactory
.get("XMLjob")
.start(stepBuilderFactory.get("XML")
.<Person, Person>chunk(10)
.reader(personXmlReader())
.processor(xmlPersonProcessor())
.writer(displayData())
.build()
)
.build();
}
@Bean
StaxEventItemReader personXmlReader() throws Exception {
System.out.println("Reader");
Jaxb2Marshaller jaxb2Marshaller = new Jaxb2Marshaller();
jaxb2Marshaller.setClassesToBeBound(Person.class);
jaxb2Marshaller.afterPropertiesSet();
StaxEventItemReader staxEventItemReader = new StaxEventItemReader();
staxEventItemReader.setName("persons");
staxEventItemReader.setResource(new ClassPathResource("person.xml"));
staxEventItemReader.setFragmentRootElementName("person");
staxEventItemReader.setUnmarshaller(jaxb2Marshaller);
return staxEventItemReader;
}
@Override
public Person process(final Person person) throws Exception {
final int id = person.getPersonId();
final String firstName = person.getFirstName().toUpperCase();
final String lastName = person.getLastName().toUpperCase();
final int age = person.getAge();
final String job = person.getJob();
final Person transformedPerson = new Person(id, firstName, lastName, age+1, job);
log.info("Job Converting (" + person + ") into (" + transformedPerson + ")");
return transformedPerson;
}
@Scheduled(fixedRate = 5000)
public String show(){
System.out.println("System");
return null;
}
程序运行良好。。。
我启用了@EnableScheduling。为什么要将@Bean与@Scheduled混合使用?在运行期间,这不会改变任何东西,以固定速率运行时,您正在构建作业,但从未执行它们。除了将每个作业传递给垃圾收集器之外,Spring还应该如何处理这些大量的已构建作业?而不执行它们?我不明白你是什么意思。。。