尝试读取春季批处理ItemProcessor中的数据库查询时出现NullPointerException


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-May-05 22:30:13.654错误[min]o.s.SpringApplication-应用程序运行失败org.springframework.beans.factory.UnsatisfiedDependencyException:创建名为"transactionHistoryController"的bean时出错:通过字段"transactionHistoryCsvImportJob"表达的不满足依赖关系;嵌套异常为org.springframework.beans.factory.BeanCreationException:创建在类路径资源[com/datalabsina/batch/TransactionHistoryCsvImport.class]中定义了名称为"transactionHistoryJob"的bean时出错:通过工厂方法实例化bean失败;嵌套异常为org.springframework.beans.BeanInstanceException:未能实例化[org.springfframework.batch.core.Job]:工厂方法"transactionHistoryJob"引发异常;嵌套异常为org.springframework.beans.factory.BeanCreationException:创建在类路径资源[com/datalabsina/batch/TransactionHistoryCsvImport.class]中定义的名称为"transactionHistoryStep"的bean时出错:通过工厂方法实例化bean失败;嵌套异常为org.springframework.beans.BeanInstanceException:未能实例化[org.springfframework.batch.core.Step]:工厂方法"transactionHistoryStep"引发异常;嵌套异常为org.springframework.beans.factory.BeanCreationException:创建类路径资源中定义名称为"processor"的bean时出错:通过工厂方法实例化bean失败;嵌套异常为org.springframework.beans.BeanInstanceException:未能实例化[org.springfframework.batch.item.ItemProcessor]:工厂方法"processor"引发异常;嵌套异常为java.lang.NullPointerException位于org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAannotationBeanpostProcessor.java:596)位于org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:90)位于org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAannotationBeanpostProcessor.java:374)网址:org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1411)网址:org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:592)网址: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.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)网址:org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)位于org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:845)位于org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:877)网址:org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:549)网址:org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplication context.java:141)网址:org.springframework.boot.SpringApplication.refresh(SpringApplication.java:743)网址:org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:390)网址:org.springframework.boot.SpringApplication.run(SpringApplication.java:312)网址:org.springframework.boot.SpringApplication.run(SpringApplication.java:1214)网址:org.springframework.boot.SpringApplication.run(SpringApplication.java:1203)网址:com.datalabsina.ScpApplication.main(ScpApplication.java:21)由以下原因引起:org.springframework.beans.factory.BeanCreationException:创建类路径资源[com/datalabsina/batch/TransactionHistoryCsvImport.class]中定义的名称为"transactionHistoryJob"的bean时出错:通过工厂方法实例化bean失败;嵌套异常为org.springframework.beans.BeanInstanceException:未能实例化[org.springfframework.batch.core.Job]:工厂方法"transactionHistoryJob"引发异常;嵌套异常为org.springframework.beans.factory.BeanCreationException:创建在类路径资源[com/datalabsina/batch/TransactionHistoryCsvImport.class]中定义的名称为"transactionHistoryStep"的bean时出错:通过工厂方法实例化bean失败;嵌套异常为org.springframework.beans.BeanInstanceException:未能实例化[org.springfframework.batch.core.Step]:工厂方法"transactionHistoryStep"引发异常;嵌套异常为org.springframework.beans.factory.BeanCreationException:创建类路径资源中定义名称为"processor"的bean时出错:通过工厂方法实例化bean失败;嵌套异常为org.springframework.beans.BeanInstanceException:未能实例化[org.springfframework.batch.item.ItemProcessor]:工厂方法"processor"引发异常;嵌套异常为java.lang.NullPointerException位于org.springframework.beans.factory.support.ConstrutorResolver.instante(ConstructorResolver.java:627)位于org.springframework.beans.factory.support.ConstrutorResolver.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.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)网址:org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)位于org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:277)位于org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1251)位于org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1171)位于org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAannotationBeanpostProcessor.java:593)…省略了19个常见帧由:org.springframework.beans.BeanInstanceException引起:未能实例化[org.springfframework.batch.core.Job]:工厂方法"transactionHistoryJob"引发异常;嵌套异常为org.springframework.beans.factory.BeanCreationException:创建在类路径资源[com/datalabsina/batch/TransactionHistoryCsvImport.class]中定义的名称为"transactionHistoryStep"的bean时出错:通过工厂方法实例化bean失败;嵌套异常为org.springframework.beans.BeanInstanceException:未能实例化[org.springfframework.batch.core.Step]:工厂方法"transactionHistoryStep"引发异常;嵌套异常为org.springframework.beans.factory.BeanCreationException:创建类路径资源中定义名称为"processor"的bean时出错:通过工厂方法实例化bean失败;嵌套异常为org.springframework.beans.BeanInstanceException:未能实例化[org.springfframework.batch.item.ItemProcessor]:工厂方法"processor"引发异常;嵌套异常为java.lang.NullPointerException网址:org.springframework.beans.factory.support.SimpleInstantiationStrategy.instante(SimpleInstantiationStrategy.java:185)位于org.springframework.beans.factory.support.ConstrutorResolver.instante(ConstructorResolver.java:622)…省略了32个常用帧由以下原因引起:org.springframework.beans.factory.BeanCreationException:创建类路径资源[com/datalabsina/batch/TransactionHistoryCsvImport.class]中定义的名称为"transactionHistoryStep"的bean时出错:通过工厂方法实例化bean失败;嵌套异常为org.springframework.beans.BeanInstanceException:未能实例化[org.springfframework.batch.core.Step]:工厂方法"transactionHistoryStep"引发异常;嵌套异常为org.springframework.beans.factory.BeanCreationException:创建类路径资源中定义名称为"processor"的bean时出错:通过工厂方法实例化bean失败;嵌套异常为org.springframework.beans.BeanInstanceException:未能实例化[org.springfframework.batch.item.ItemProcessor]:工厂方法"processor"引发异常;嵌套异常为java.lang.NullPointerException位于org.springframework.beans.factory.support.ConstrutorResolver.instante(ConstructorResolver.java:627)位于org.springframework.beans.factory.support.ConstrutorResolver.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.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)网址:org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)位于org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.resolveBeanReference(ConfigurationClassEnancer.java:394)位于org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.cintercept(ConfigurationClassEnancer.java:366)访问com.dataabsindia.batch.TransactionHistoryCsvImport$$EnhancerBySpringCGLIB$$669179a6.transactionHistoryStep()网址:com.datalabsina.batch.TransactionHistoryCsvImport.transactionHistoryJob(TransactionHistoryCsvImport.java:97)访问com.datalabsina.batch.TransactionHistoryCsvImport$$EnhancerBySpringCGLIB$$669179a6.CGLIB$transactionHistoryJob$3()访问com.datalabsina.batch.TransactionHistoryCsvImport$$EnhancerBySpringCGLIB$$669179a6$$FastClassBySpringCGLIB$$d1625b5b.invoke()网址:org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244)位于org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.cintercept(ConfigurationClassEnhancer.java:363)访问com.dataabsindia.batch.TransactionHistoryCsvImport$$EnhancerBySpringCGLIB$$669179a6.transactionHistoryJob()在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)位于sun.reflect.NativeMethodAccessorImpl.invoke(未知源)在sun.reflect.DelegatingMethodAccessorImpl.invoke(未知源)位于java.lang.reflect.Method.ioke(未知源)网址:org.springframework.beans.factory.support.SimpleInstantiationStrategy.instante(SimpleInstantiationStrategy.java:154)…省略了33个常用帧由:org.springframework.beans.BeanInstanceException引起:未能实例化[org.springfframework.batch.core.Step]:工厂方法"transactionHistoryStep"引发异常;嵌套异常为org.springframework.beans.factory.BeanCreationException:创建类路径资源中定义名称为"processor"的bean时出错:通过工厂方法实例化bean失败;嵌套异常为org.springframework.beans.BeanInstanceException:未能实例化[org.springfframework.batch.item.ItemProcessor]:工厂方法"processor"引发异常;嵌套异常为java.lang.NullPointerException网址:org.springframework.beans.factory.support.SimpleInstantiationStrategy.instante(SimpleInstantiationStrategy.java:185)位于org.springframework.beans.factory.support.ConstrutorResolver.instante(ConstructorResolver.java:622)…省略了56个常见帧由以下原因引起:org.springframework.beans.factory.BeanCreationException:创建类路径资源中定义了名称为"processor"的bean时出错:通过工厂方法实例化bean失败;嵌套异常为org.springframework.beans.BeanInstanceException:未能实例化[org.springfframework.batch.item.ItemProcessor]:工厂方法"processor"引发异常;嵌套异常为java.lang.NullPointerException位于org.springframework.beans.factory.support.ConstrutorResolver.instante(ConstructorResolver.java:627)位于org.springframework.beans.factory.support.ConstrutorResolver.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.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)网址:org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)位于org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.resolveBeanReference(ConfigurationClassEnancer.java:394)位于org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.cintercept(ConfigurationClassEnancer.java:366)访问com.datalabsina.batch.TransactionHistoryCsvImport$$EnhancerBySpringCGLIB$$669179a6.processor()访问com.datalabsina.batch.TransactionHistoryCsvImport.transactionHistoryStep(TransactionHistoryCsvImport.java:105)访问com.datalabsina.batch.TransactionHistoryCsvImport$$EnhancerBySpringCGLIB$$669179a6.CGLIB$transactionHistoryStep$4()访问com.datalabsina.batch.TransactionHistoryCsvImport$$EnhancerBySpringCGLIB$$669179a6$$FastClassBySpringCGLIB$$d1625b5b.invoke()网址:org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244)位于org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.cintercept(ConfigurationClassEnhancer.java:363)访问com.dataabsindia.batch.TransactionHistoryCsvImport$$EnhancerBySpringCGLIB$$669179a6.transactionHistoryStep()在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)位于sun.reflect.NativeMethodAccessorImpl.invoke(未知源)在sun.reflect.DelegatingMethodAccessorImpl.invoke(未知源)位于java.lang.reflect.Method.ioke(未知源)网址:org.springframework.beans.factory.support.SimpleInstantiationStrategy.instante(SimpleInstantiationStrategy.java:154)…省略了57个通用框架由以下原因引起:org.springframework.beans.BeanInstanceException:未能实例化[org.springfframework.batch.item.ItemProcessor]:工厂方法"processor"引发异常;嵌套异常为java.lang.NullPointerException网址:org.springframework.beans.factory.support.SimpleInstantiationStrategy.instante(SimpleInstantiationStrategy.java:185)位于org.springframework.beans.factory.support.ConstrutorResolver.instante(ConstructorResolver.java:622)…省略了80个常用框架导致原因:java.lang.NullPointerException:null访问com.dataabsindia.batch.TransactionHistoryCsvItemProcessor。(TransactionHistoryCsvItemProcessor.java:55)网址:com.datalabsina.batch.TransactionHistoryCsvImport.processor(TransactionHistoryCsvImport.java:160)访问com.datalabsina.batch.TransactionHistoryCsvImport$$EnhancerBySpringCGLIB$$669179a6.CGLIB$processor$2()访问com.datalabsina.batch.TransactionHistoryCsvImport$$EnhancerBySpringCGLIB$$669179a6$$FastClassBySpringCGLIB$$d1625b5b.invoke()网址:org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244)位于org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.cintercept(ConfigurationClassEnhancer.java:363)访问com.datalabsina.batch.TransactionHistoryCsvImport$$EnhancerBySpringCGLIB$$669179a6.processor()在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)位于sun.reflect.NativeMethodAccessorImpl.invoke(未知源)在sun.reflect.DelegatingMethodAccessorImpl.invoke(未知源)位于java.lang.reflect.Method.ioke(未知源)网址:org.springframework.beans.factory.support.SimpleInstantiationStrategy.instante(SimpleInstantiationStrategy.java:154)…81个普通帧省略

您遇到的异常是由于您试图使用@Autowired依赖项,然后才保证该依赖项已注入到TransactionHistoryCsvItemProcessor对象中。

工厂方法"processor"引发异常;嵌套异常为位于的java.lang.NullPointerExceptionorg.springframework.beans.factory.annotations.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnorationBeanPostProcesser.java:596)

这些是有问题的行:

List<TransactionHistory>list= transactionHistoryRepository.findAll();
List<String> pLevel7Products = productHierarchyRepository.getPLevel7Ids();
List<String> level5locations=locationHierarchyRepository.getLevel5Ids();

如果您需要对TransactionHistoryCsvItemProcessor对象进行一些额外的初始化,最简单的方法是让TransactionHistoryCsvItemProcessor实现InitializingBean,然后在重写的方法afterPropertiesSet中初始化List

例如,

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();
}
}

最新更新