在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java  網(wǎng)絡(luò)安全/ SpringBoot JPA repository always null

SpringBoot JPA repository always null

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 ?

回答
編輯回答
孤星

the value of mercRepository is null ,so you need to check MercRepository.java and find the reason

2017年3月18日 20:54
編輯回答
離魂曲

請(qǐng)貼出 MercRepository.java 文件內(nèi)容。

I'm not good at english, please show the content of file MercRepository.java.

2018年6月30日 22:02
編輯回答
厭遇

謝謝網(wǎng)友的回復(fù),我已經(jīng)找到解決方法了
MercRepository null 是因?yàn)槲?new 一個(gè) 新 class,也就是new Reader()

解決方法

@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(reader()) // call reader method in same class
            .processor(new Processor())
            .writer(new Writer())
            .build();
}

 @Bean
public ItemReader<A> reader() {
   return new Reader();
}

2018年1月20日 11:02