NullPointerException при попытке чтения запросов к базе данных в Spring Batch ItemProcessor
public class TransactionHistoryCsvItemProcessor implements ItemStream, ItemProcessor<TransactionHistory,TransactionHistory>{
@Autowired
private TransactionHistoryRepository transactionHistoryRepository;
@Autowired
private ProductHierarchyRepository productHierarchyRepository;
@Autowired
private LocationHierarchyRepository locationHierarchyRepository;
List<TransactionHistory>list= transactionHistoryRepository.findAll();
List<String> pLevel7Products = productHierarchyRepository.getPLevel7Ids();
List<String> level5locations=locationHierarchyRepository.getLevel5Ids();
int count=1;
TransactionHistoryCsvItemProcessor(){
}
private Set<TransactionHistory> processedData = new HashSet<TransactionHistory>();
@Override
public TransactionHistory process(TransactionHistory transactionHistory) throws Exception {
TransactionHistory processedObj = new TransactionHistory();
if (pLevel7Products.contains(transactionHistory.getProductId().trim())) {
if (level5locations.contains(transactionHistory.getLocationId().trim())) {
if(list!=null&&!list.isEmpty()){
if(list.contains(transactionHistory)){
count++;
throw new MyOwnException(" duplicates data error", transactionHistory.getProductId().trim(),
transactionHistory.getLocationId().trim(), transactionHistory.getPeriodId(),
transactionHistory.getQuantity(), "at line numer ", count-1);
}
}
processedObj.setProductId(transactionHistory.getProductId().trim());
processedObj.setLocationId(transactionHistory.getLocationId().trim());
processedObj.setQuantity(transactionHistory.getQuantity());
processedObj.setPeriodId(transactionHistory.getPeriodId());
processedObj.setCreatedDate(LocalDate.now());
processedData.add(transactionHistory);
transactionHistory.setItemCount(count);
count++;
}else {
System.out.println("failed location");
count++;
transactionHistory.setItemCount(count);
throw new MyOwnException(" location data error", transactionHistory.getProductId().trim(),
transactionHistory.getLocationId().trim(), transactionHistory.getPeriodId(),
transactionHistory.getQuantity(), "at line numer ", count-1);
}
} else {
System.out.println("failed product");
// count++;
try {
transactionHistory.setItemCount(count);
throw new MyOwnException(" product data error", transactionHistory.getProductId().trim(),
transactionHistory.getLocationId().trim(), transactionHistory.getPeriodId(),
transactionHistory.getQuantity(), "at line numer ", count);
} catch (MyOwnException e) {
System.out.println("product error");
throw new MyOwnException(" product data error", transactionHistory.getProductId().trim(),
transactionHistory.getLocationId().trim(), transactionHistory.getPeriodId(),
transactionHistory.getQuantity(), "at line numer ", count);
} finally {
count++;
}
}
//}
if (processedObj.getProductId() == null && processedObj.getLocationId() == null)
return null;
else {
// processedData.add(processedObj);
return processedObj;
}
}
@Override
public void open(ExecutionContext executionContext) throws ItemStreamException {
// TODO Auto-generated method stub
//list=transactionHistoryRepository.findAll();
}
@Override
public void update(ExecutionContext executionContext) throws ItemStreamException {
// TODO Auto-generated method stub
}
@Override
public void close() throws ItemStreamException {
// TODO Auto-generated method stub
count=1;
}
}
//============================================//
@Bean
public Step transactionHistoryStep() {
return ((SimpleStepBuilder<TransactionHistory, TransactionHistory>) stepBuilderFactory.get("transactionHistoryStep")
.<TransactionHistory,TransactionHistory>chunk(10)
.reader(reader())
.processor(processor())
.writer(writer())
.stream(new TransactionHistoryCsvItemProcessor()))
.faultTolerant()
.skipPolicy(transactionHistoryCsvImportSkipPolicy)
.build();
}
@Bean
@JobScope
public FlatFileItemReader<TransactionHistory> reader() {
FlatFileItemReader<TransactionHistory> flatFileItemReader= new FlatFileItemReader<TransactionHistory>();
try {
TransactionHistoryFieldSetMapper transactionHistoryFieldSetMapper= new TransactionHistoryFieldSetMapper();
flatFileItemReader.setResource(new FileSystemResource(FileResources.mappingFileResouces("transactionHistoryImportCsvFile")));
flatFileItemReader.setName("CSV-Reader");
flatFileItemReader.setLinesToSkip(1);
flatFileItemReader.setLineMapper(new DefaultLineMapper<TransactionHistory>(){{
setLineTokenizer(new DelimitedLineTokenizer() {{
setNames("productId","locationId","periodId","quantity");
setFieldSetMapper(transactionHistoryFieldSetMapper);
}});
setFieldSetMapper(new TransactionHistoryFieldSetMapper(){{
//setTargetType(TransactionHistory.class);
}});
}});
}
catch(Exception e) {
e.printStackTrace();
logger.error("read error"+flatFileItemReader);
}
return flatFileItemReader;
}
@Bean
public ItemProcessor<TransactionHistory, TransactionHistory> processor() {
return new TransactionHistoryCsvItemProcessor();
}
//===========error ====//
Ошибка запуска ApplicationContext. Чтобы отобразить отчет об условиях, повторно запустите приложение с включенной отладкой. 2020-май-05 22:30:13.654 ОШИБКА [основная] osbSpringApplication - сбой при запуске приложения org.springframework.beans.factory.UnsatisfiedDependencyException: ошибка при создании bean-компонента с именем 'transactionHistoryController': неудовлетворенная зависимость, выраженная через поле 'transactionHistoryCs'; вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка при создании bean-компонента с именем 'transactionHistoryJob', определенным в ресурсе пути к классу [com/datalabsindia/batch/TransactionHistoryCsvImport.class]: создание экземпляра bean-компонента с помощью фабричного метода завершилось неудачно; вложенное исключение - org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [org.springframework.batch.core.Job]:Заводской метод transactionHistoryJob вызвал исключение; вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка при создании bean-компонента с именем 'transactionHistoryStep', определенным в ресурсе пути к классу [com/datalabsindia/batch/TransactionHistoryCsvImport.class]: создание экземпляра bean-компонента с помощью фабричного метода не удалось; вложенное исключение - org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [org.springframework.batch.core.Step]: фабричный метод 'transactionHistoryStep' вызвал исключение; вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка при создании bean-компонента с именем "процессор", определенным в ресурсе пути к классу [com/datalabsindia/batch/TransactionHistoryCsvImport.class]: создание экземпляра компонента с помощью фабричного метода не удалось; вложенное исключение - org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [org.springframework.batch.item.ItemProcessor]: фабричный метод 'processor' вызвал исключение; вложенное исключение - это исключение java.lang.NullPointerException в org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:596) в orramework.annotation. 90) на org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:374) на org.springframework.beans.factory.support..factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:592) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapable $Factory.createBean(AbstractAutowireCapable $Factory.javabctory.subscribe.com).:320) в org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) в org.springframework.beans.factory.support.AbstractBeanFactory.doBeanframe.subscribe.com или в AbstractBeanFactory.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) по адресу org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.preInstantiateSingletons (DefaultListableBeanFactory.preInstantiateSingletons (DefaultListableBeanFactory.preInstantiateSingletons) (DefaultListableBeanFactory.preInstantiateSingletons) (DefaultListableBeanFactory.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:877) в org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:549) в org.springframework.bootfreshContext.Context.java.springframework.boot.context.141) в org.springframework.boot.SpringApplication.refresh(SpringApplication.java:743) в org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:390) в org.springframework.boot.Spring(SpringApplication.ring.:312) в org.springframework.boot.SpringApplication.run(SpringApplication.java:1214) в org.springframework.boot.SpringApplication.run(SpringApplication.java:1203) в com.datalabsindia.ScpApplication.main(ScpApplication.main (ScpApplication.javap:21) Вызвано: org.springframework.beans.factory.BeanCreationException: ошибка создания bean-компонента с именем 'transactionHistoryJob', определенным в ресурсе пути к классу [com/datalabsindia/batch/TransactionHistoryCsvImport.class]: создание экземпляра bean-компонента с помощью фабричного метода завершилось неудачно; вложенное исключение - org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [org.springframework.batch.core.Job]: фабричный метод "transactionHistoryJob" вызвал исключение; вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка при создании bean-компонента с именем 'transactionHistoryStep', определенным в ресурсе пути к классу [com/datalabsindia/batch/TransactionHistoryCsvImport.class]: создание экземпляра bean-компонента с помощью фабричного метода не удалось; вложенное исключение - org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [org.springframework.batch.core.Step]: фабричный метод transactionHistoryStep вызвал исключение; вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка при создании bean-компонента с именем "процессор", определенным в ресурсе пути к классу [com/datalabsindia/batch/TransactionHistoryCsvImport.class]: создание экземпляра компонента с помощью фабричного метода не удалось; вложенное исключение - org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [org.springframework.batch.item.ItemProcessor]: заводской метод 'processor' вызвал исключение; вложенное исключение - это исключение java.lang.NullPointerException в org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:627) в org.springframework.beans.factory.support.ConstructorResolver.constructorResolver. на org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1321) при org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1160) при org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555) по адресу org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapable $Factory.createBean(AbstractAutowireCapable $Factory.javabctory.subscribe.java.subscribe.com):320) в org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) в org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318) по адресу org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) по адресу org.spring.Framework.java:199) по адресу org.spring.java:277) в org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1251) в org.springframework.beans.factory.support.DefaultListctoryBeandencyFramework.beans.factory.support.DefaultListctory.jpg.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:593) ... Пропущено 19 общих кадров Причина: org.springframework.beans.BeanInstantiationException [Не удалось создать экземпляр.springframework.batch.core.Job]: фабричный метод "transactionHistoryJob" вызвал исключение; вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка при создании bean-компонента с именем 'transactionHistoryStep', определенным в ресурсе пути к классу [com/datalabsindia/batch/TransactionHistoryCsvImport.class]: создание экземпляра bean-компонента с помощью фабричного метода не удалось; вложенное исключение - org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [org.springframework.batch.core.Step]: фабричный метод 'transactionHistoryStep' вызвал исключение; вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка при создании bean-компонента с именем "процессор", определенным в ресурсе пути к классу [com/datalabsindia/batch/TransactionHistoryCsvImport.class]: создание экземпляра компонента с помощью фабричного метода не удалось;вложенное исключение - org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [org.springframework.batch.item.ItemProcessor]: заводской метод 'processor' вызвал исключение; вложенное исключение - это исключение java.lang.NullPointerException в org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) в org.springframework.beans.factory.support.ConstructorResolver.ConstructorResolver.ConstructorResolver.ConstructorResolver22... 32 общих кадра пропущено Причина: org.springframework.beans.factory.BeanCreationException: ошибка при создании bean-компонента с именем 'transactionHistoryStep', определенным в ресурсе пути к классу [com/datalabsindia/batch/TransactionHistoryCsvImport.class]: создание экземпляра компонента с помощью фабричного метода не удалось; вложенное исключение - org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [org.springframework.batch.core.Step]: фабричный метод 'transactionHistoryStep' вызвал исключение; вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка при создании bean-компонента с именем "процессор", определенным в ресурсе пути к классу [com/datalabsindia/batch/TransactionHistoryCsvImport.class]: создание экземпляра компонента с помощью фабричного метода не удалось; вложенное исключение - org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [org.springframework.batch.item.ItemProcessor]: заводской метод 'processor' вызвал исключение; вложенное исключение - это исключение java.lang.NullPointerException в org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:627) в org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:456) при org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1321) при org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1160) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555) на org.spring.framework.beans.factory.support.AbstractArameworkCreateBean(AbstractAutowireCapableBeanFactory.java:555) в org.spring..support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320) в org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) по адресу org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318) по адресу org.springframework.beans.factory.java:222 в org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.resolveBeanReference(ConfigurationClassEnhancer.java:394) в org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.Index.configurationClassEnhancer $ BeanMethodjet.jpg $$EnhancerBySpringCGLIB$$669179a6.transactionHistoryStep() в com.datalabsindia.batch.TransactionHistoryCsvImport.transactionHistoryJob(TransactionHistoryCsvImport.java:97) в com.datalabsindia.batch.TransactionHistoryCsvImport$$EnhancerBySpringCGLIB$$669179a6.CGLIB$transactionHistoryJob$3() по адресу com.datalabsindia.batch.TransactionHistoryCsvImport $$ EnhancerBySpringCGLIB$$ 669179a6 FastClassBySpringCGLIB$$ 669179a6 или (MethodProxy.java:244) по адресу org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:363) по адресу com.datalabsindia.batch.TransactionHistoryCsvImport. $$ EnhancerBlectory ()..NativeMethodAccessorImpl.invoke0(собственный метод) в sun.reflect.NativeMethodAccessorImpl.invoke(Неизвестный источник) в sun.reflect.DelegatingMethodAccessorImpl.invoke(Неизвестный источник) в java.lang.reflect.Metworkg.invoke (Неизвестный источник) в файле.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ... 33 общих кадра пропущены Причина: org.springframework.beans.BeanInstantiationException: Не удалось создать экземпляр [org.springframework.batch.core.Step] метод "transactionHistoryStep" вызвал исключение; вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка при создании bean-компонента с именем "процессор", определенным в ресурсе пути к классу [com/datalabsindia/batch/TransactionHistoryCsvImport.class]: создание экземпляра компонента с помощью фабричного метода не удалось; вложенное исключение - org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [org.springframework.batch.item.ItemProcessor]: заводской метод 'processor' вызвал исключение; вложенное исключение - java.lang.NullPointerException в org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) в org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:622) ... 56.springframework.beans.factory.BeanCreationException: ошибка при создании bean-компонента с именем "процессор", определенным в ресурсе пути к классу [com/datalabsindia/batch/TransactionHistoryCsvImport.class]: создание экземпляра bean-компонента с помощью фабричного метода завершилось неудачно; вложенное исключение - org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [org.springframework.batch.item.ItemProcessor]: заводской метод 'processor' вызвал исключение; Вложенное исключение - это java.lang.NullPointerException в org.springframework.beans.factory.support.ConstructorResolver.Instantiate (ConstructorResolver.java:627) при org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:456) при org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1321) на org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1160) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:515) в org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320) в org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) в org.springFrameworkBeanRegistry.: 318) по адресу org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) в org.springframework.context.annotation.ConfigurationClassEnhancer $ BeanMethodInterceptworkClassEnhancer $ BeanMethodInterceptourClassEnhancer context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:366) по адресу com.datalabsindia.batch.TransactionHistoryCsvImport$$EnhancerBySpringCGLIB$$669179a6.processor.transactionHistoryStep(TransactionHistoryCsvImport.java:105) в com.datalabsindia.batch.TransactionHistoryCsvImport$$EnhancerBySpringCGLIB$$669179a6.CGLIB$transactionHistoryStep$4() в com.datalabsindia.batch.TransactionHistoryCsvImport$$EnhancerBySpringCGLIB$$669179a6$$FastClassBySpringCGLIB$$d1625b5b.invoke() в org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244) в org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClass.datia.interceptor.interceptr TransactionHistoryCsvImport$$EnhancerBySpringCGLIB$$669179a6.transactionHistoryStep() в sun.reflect.NativeMethodAccessorImpl.invoke0(собственный метод) в sun.reflect.NativeMethodAccessorImpl.invoke(неизвестный источник).invoke (Неизвестный источник) в java.lang.reflect.Method.invoke(Неизвестный источник) в org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ... Пропущено 57 общих кадров Причина: org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [org.springframework.batch.item.ItemProcessor]: заводской метод 'processor' вызвал исключение; вложенное исключение - это исключение java.lang.NullPointerException в org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) в org.springframework.beans.factory.support.ConstructorResolver.ConstructorResolver.ConstructorResolver22... 80 общих кадров пропущено Причина: java.lang.NullPointerException: null в com.datalabsindia.batch.TransactionHistoryCsvItemProcessor.(TransactionHistoryCsvItemProcessor.java:55) в com.datalabsindia.batch.TransactionHistoryCsvImport.processor(TransactionHistoryCsvImport.java:160) в com.datalabsindia.batch2. $. datalabsindia.batch.TransactionHistoryCsvImport $$ EnhancerBySpringCGLIB$$ 669179a6 $$ FastClassBySpringCGLIB$$ d1625b5b.invoke () в org.springframework.cglib.proxy.MethodFramework.cglib.proxy. $ BeanMethodInterceptor.intercept (ConfigurationClassEnhancer.java:363) в com.datalabsindia.batch.TransactionHistoryCsvImport$$EnhancerBySpringCGLIB$$669179a6.processor () в sun.reflect.NativeMethodAccessor. Sun.reflect.NativeMethodAccessor.NativeMethodAccessorImpl.invoke(Неизвестный источник) в sun.reflect.DelegatingMethodAccessorImpl.invoke(Неизвестный источник) в java.lang.reflect.Method.invoke(Неизвестный источник) в org.springframework.beans.factory.java:154) ... 81 общий фрейм опущен
1 ответ
Исключение, с которым вы столкнулись, связано с вашей попыткой использовать @Autowire
d, прежде чем у вас будут какие-либо гарантии, что эта зависимость была внедрена в ваш TransactionHistoryCsvItemProcessor
объект.
Заводской метод "процессор" выдал исключение; вложенное исключение - это java.lang.NullPointerException в org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:596)
Это проблемные строки:
List<TransactionHistory>list= transactionHistoryRepository.findAll();
List<String> pLevel7Products = productHierarchyRepository.getPLevel7Ids();
List<String> level5locations=locationHierarchyRepository.getLevel5Ids();
Если вам нужно выполнить дополнительную инициализацию вашего TransactionHistoryCsvItemProcessor
объект, проще всего иметь TransactionHistoryCsvItemProcessor
осуществлять InitializingBean
, а затем инициализируйте свой List
s в переопределенном методе afterPropertiesSet
.
К примеру,
public class TransactionHistoryCsvItemProcessor
implements InitializingBean, ItemStream, ItemProcessor<TransactionHistory,TransactionHistory>{
@Autowired
private TransactionHistoryRepository transactionHistoryRepository;
@Autowired
private ProductHierarchyRepository productHierarchyRepository;
@Autowired
private LocationHierarchyRepository locationHierarchyRepository;
List<TransactionHistory> list;
List<String> pLevel7Products;
List<String> level5locations;
// ...implementation omitted for brevity
@Override
public void afterPropertiesSet() throws Exception {
// typical null checks would also be prudent
list = transactionHistoryRepository.findAll();
pLevel7Products = productHierarchyRepository.getPLevel7Ids();
level5locations = locationHierarchyRepository.getLevel5Ids();
}
}