Почему пакетное задание выполняется без остановки при вызове api rest, у которого есть только одна запись json. Я попытался исправить проблему, проверив другие ресурсы, и я не смог найти никакого решения.Пользовательский itemreader идет бесконечным циклом. Пожалуйста, помогите мне, где я делаю неправильно
Если я прокомментирую код ниже в методе read (), это работает, как я знаю, когда json заканчивает чтение, чтобы я мог вернуть нуль:
if(employee != null){
logger.info("After the rest read method"+employee);
return employee;
}
Контроллер:
@RestController
@RequestMapping("/api")
public class EmployeeController {
@GetMapping("/employee")
public Employee getEmployeeByID() {
return new Employee(7000,"lombok15","lombok10","8676876866","lombok15","AB6876");
}
}
CustomerItemReader:
@Component
public class EmployeeItemReader implements ItemReader<Employee> {
private static final Logger logger = LoggerFactory.getLogger("EmployeeItemReader.class");
private static final String REST_URL = "http://localhost:9590/api/employee";
private Employee employee = null;
private RestTemplate restTemplate;
@Override
public Employee read() {
Employee employee = null;
logger.info("inside rest read method"+employee);
logger.info("Fetching the employee date from the database");
restTemplate = new RestTemplate();
ResponseEntity<Employee> response = restTemplate.getForEntity(REST_URL,Employee.class);
employee = response.getBody();
if(employee != null){
logger.info("After the rest read method"+employee);
return employee;
}
return null;
}
}
SpringBatchConfig:
@Configuration
@EnableBatchProcessing
public class SpringBatchConfig {
Logger logger = LoggerFactory.getLogger("SpringBatchConfig.class");
@Bean
public Job job(JobBuilderFactory jobBuilderFactory,
StepBuilderFactory stepBuilderFactory,
ItemReader<Employee> itemReader,
ItemProcessor<Employee, Employee> itemProcessor,
ItemWriter<Employee> itemWriter
) {
Step step = stepBuilderFactory.get("EMPLOYEE-FILE-WRITTER-JOB")
.<Employee, Employee>chunk(1)
.reader(itemReader)
.processor(itemProcessor)
.writer(itemWriter)
.build();
return jobBuilderFactory.get("EMPLYEE-FILE-JOB")
.incrementer(new RunIdIncrementer())
.start(step)
.build();
}
@Bean
public ItemReader<Employee> itemReader(){
return new EmployeeItemReader();
}
}