I have below code
Controller
@RequestMapping("/reminder")
@ResponseBody
public String reminder() throws Exception {
JobParameters jobParameters = new JobParametersBuilder().addLong("time", System.currentTimeMillis())
.toJobParameters();
jobLauncher.run(job, jobParameters);
return "Done";
}
Config
@Configuration
public class BatchConfig {
@Autowired
public JobBuilderFactory jobBuilderFactory;
@Autowired
public StepBuilderFactory stepBuilderFactory;
@Bean
public Job job() { //defines a job
return jobBuilderFactory.get("job")
.incrementer(new RunIdIncrementer())
.flow(step1())
.end()
.build();
}
@Bean
public Step step1() { // defines a single step
return stepBuilderFactory.get("step1")
.<A, A>chunk(1) //important to be one in this case to commit after every line read
.reader(new Reader())
.processor(new Processor())
.writer(new Writer())
.build();
}
}
Reader
@Service
public class Reader implements ItemReader<A> {
private static final Logger log = LoggerFactory.getLogger(Reader.class);
@Autowired
MercRepository mercRepository;
@Override
public A read() throws Exception, UnexpectedInputException, ParseException, NonTransientResourceException {
if(mercRepository!=null)
{
System.out.println("not null");
}else{
System.out.println("null");
}
List<A> thList = mercRepository.getMer();
System.out.println("thlist size " + thList.size());
return (Campaign) thList;
}
}
Error
null
2018-02-22 10:05:45 ERROR o.s.batch.core.step.AbstractStep - Encountered an error executing step step1 in job job
java.lang.NullPointerException: null
at com.rh.app.batch.reader.Reader.read(Reader.java:43)
at com.rh.app.batch.reader.Reader.read(Reader.java:27)
at org.springframework.batch.core.step.item.SimpleChunkProvider.doRead(SimpleChunkProvider.java:91)
at org.springframework.batch.core.step.item.SimpleChunkProvider.read(SimpleChunkProvider.java:157)
at org.springframework.batch.core.step.item.SimpleChunkProvider$1.doInIteration(SimpleChunkProvider.java:116)
at org.springframework.batch.repeat.support.RepeatTemplate.getNextResult(RepeatTemplate.java:374)
at org.springframework.batch.repeat.support.RepeatTemplate.executeInternal(RepeatTemplate.java:215)
at org.springframework.batch.repeat.support.RepeatTemplate.iterate(RepeatTemplate.java:144)
I have added a @Service
to autowired
the repository, but the error still exists. Any advice ?
谢谢网友的回复,我已经找到解决方法了
MercRepository
null 是因为我 new 一个 新class
,也就是new Reader()
解决方法