这是我的代码,我不知道为什么我的beanmouvementtomapitemprocessor
没有被注入,它在构造函数中总是空的
@Autowired
private MouvementToMapItemProcessor mvts;
private Iterator it;
public InMemoryMouvementReader() {
it = mvts.getMouvmentFileRowMap().entrySet().iterator();
}
下面是我的配置类:
@Configuration
@EnableBatchProcessing
public class BatchConfiguration {
public BatchConfiguration() {
}
@Bean
public ItemReader<MouvementFileRow> mouvementMapReader() {
return new InMemoryMouvementReader();
}
@Bean
public ItemProcessor<MouvementFileRow, MouvementFileRow> mouvementMapProcessor() {
return new MouvementToMapItemProcessor();
}
@Bean
public Step generateDemmandeCommunication() {
return stepBuilderFactory.get("generateDemmandeCommunication")
.<MouvementFileRow, DemandeCommunication>chunk(10)
.faultTolerant().skipLimit(Integer.MAX_VALUE).skip(CustomReaderSkipException.class)
.reader(mouvementMapReader())
.processor(mouvementProcessor())
.writer(demandeCommunicationItemWriter())
.listener(customStepListener())
.build();
}
public class InMemoryMouvementReader implements ItemReader<MouvementFileRow> {
@Autowired
private MouvementToMapItemProcessor mvts;
private Iterator it;
public InMemoryMouvementReader() {
it = mvts.getMouvmentFileRowMap().entrySet().iterator();
}
private void initialize() {
}
@Override
public MouvementFileRow read() throws Exception {
if (it.hasNext()) {
return mvts.getMouvmentFileRowMap().get(it.next());
} else return null;
}
}
@Component
public class MouvementToMapItemProcessor implements ItemProcessor<MouvementFileRow, MouvementFileRow> {
private static final Logger log = LoggerFactory.getLogger(MouvementToMapItemProcessor.class);
private Map<Long, MouvementFileRow> mouvmentFileRowMap;
public MouvementToMapItemProcessor() {
mouvmentFileRowMap = new HashMap<Long, MouvementFileRow>();
}
@Override
public MouvementFileRow process(final MouvementFileRow mouvement) throws Exception {
........
return null;
}
public Map<Long, MouvementFileRow> getMouvmentFileRowMap() {
return mouvmentFileRowMap;
}
我的堆栈跟踪
启动ApplicationContext时出错。若要显示自动配置报告,请在启用“debug”的情况下重新运行应用程序。11:55:29.139[restartedMain]错误O.S.Boot.SpringApplication-应用程序启动失败org.SpringFramework.Beans.factory.BeanCreationException:创建类路径资源[fr/gouv/justice/spark/FileToBaseBatch/BatchConfiguration.class]中定义的名为“Movement MapReader”的bean时出错:通过工厂方法实例化bean失败;嵌套异常为org.springframework.beans.beanInstantiationException:无法实例化[org.springframework.batch.item.itemReader]:工厂方法“movement mapreader”引发异常;嵌套异常为java.lang.NullPointerException位于org.springframework.beans.factor.support.constructorresolver.instantiateusingfactorymethod(constructorresolver.java:599)位于org.springframework.beans.factor.support.abstractautoWirecapablebeanfactor.instantiateusingfactorymethod(abstractautoWirecapablebeanfactor.java:1173)位于mework.beans.factory.support.abstractbeanfactory.dogetBean(abstractbeanfactory.java:302)在org.springframework.beans.factory.support.abstractbeanfactory.getBean(abstractbeanfactory.java:197)在org.springframework.beans.factory.support.defaultlistablebeanfactory.preinstantiatesingletons(ark.filetoBaseBatch.application.main(application.java:18)位于Sun.Reflect.NativeMethodAccessorImpl.Invoke0(原生方法)位于Sun.Reflect.NativeMethodAccessorImpl.Invoke(nativeMethodAccessorImpl.java:62)位于Sun.Reflect.DelegatingMethodAccessorImpl.Invoke(nativeMethodAccessorImpl.java:43)位于嵌套异常为org.springframework.beans.factor.support.SimpleInstantiationStrategy.Instantiate(SimpleInstantiationStrategy.java:189)(org.springframework.beans.factor.support.ConstructorResolver.InstantiateUsingfactoryMethod(ConstructorResolver.java:588)...省略了22个常见框架,原因是:java.lang.NullPointerException:eanMethodInterceptor.Intercept(ConfigurationClassEnhancer.java:358)位于fr.gouv.justice.spark.filetoBaseBatch.BatchConfiguration$$EnhancerBySpringCglib$$E3e5804e.MouvementMapReader()位于Sun.Reflect.NativeMethodAccessorImpl.Invoke0(原生方法)位于Sun.Reflect.NativeMethodAccessorImpl.java:62)位于
您的MouvementToMapitemProcessor
直到构造后才被注入到InMemoryMouvementReader
中,这是导致构造函数失败并出现NullPointerException的原因。改用构造函数注入:
@Autowired
public InMemoryMouvementReader(MouvementToMapItemProcessor mvts) {
this.mvts = mvts;
it = mvts.getMouvmentFileRowMap().entrySet().iterator();
}
而且
@Bean
public ItemReader<MouvementFileRow> mouvementMapReader(MouvementToMapItemProcessor mvts) {
return new InMemoryMouvementReader(mvts);
}
而且
@Bean
public Step generateDemmandeCommunication(InMemoryMouvementReader reader, MouvementToMapItemProcessor mvts) {
return stepBuilderFactory.get("generateDemmandeCommunication")
.<MouvementFileRow, DemandeCommunication>chunk(10)
.faultTolerant().skipLimit(Integer.MAX_VALUE).skip(CustomReaderSkipException.class)
.reader(reader)
.processor(mvts)
.writer(demandeCommunicationItemWriter())
.listener(customStepListener())
.build();
}
我有一个@sessionscoped bean,一个带有@stateless注释和@inject the bean和@ejb我的EJB的Restful Jersey服务。 当我试图从浏览器的URL调用rest web服务时,服务会注入@inject UserBean。但是当我试图从@SessionScoped UserBean中的代码调用web服务时,它不会被注入。 豆子: 1: Login fr
我有一个基于XML配置的spring应用程序,其中一个bean需要com.typesafe.config.config参数作为构造函数参数。为此,我们有一个@Configuration类,其中一个方法(注释为@bean)返回一个com.typeSafe.config.config对象。 但spring启动时会抱怨“未能实例化[com.typesafe.config.config]:指定的类是接口”
我使用Ehcache 2.6.8作为Spring Boot应用程序的一部分,作为Hibernate 4.3.11的二级缓存。我有一个JMX MBean,它允许我检查缓存的内容(如果您感兴趣,可以在这里查看)。 首先,我使用CacheManager名称来获取缓存列表。这很好。我可以用返回缓存。然后我调用。这很好,cacheName是“com.myapp.DomainObjectName”,键被列为“
使用Spring bean作为带有@cacheable注释的键
我试图打开一个文件进行解析(一个二进制文件),但是无论什么fopen()总是返回NULL。 我已经排除了几乎所有的东西,我有一个简单的测试脚本: trigger_error(var_export())的输出;是: 无论我为第二个fopen()选项指定什么标志,我都会得到相同的结果。 现在,明显的问题是该文件是否存在,以及我是否拥有读取该文件的权限?这两个问题的答案都是肯定的。我使用了相对路径和绝对
在fetchplaces方法中,新的window.google.maps.places.PlacesService(map)总是返回null,并且Service.NearbySearch不会引发函数错误。 请帮忙。