我在批处理中遇到依赖注入问题。
@Named
public class SimpleBatchlet extends AbstractBatchlet {
@Inject
protected StorageService storageService;
...
public String process() throws Exception {
storageService.doSomething(); // this throws a null pointer exception
}
}
@Named
public class LocalFileStorageService implements StorageService {
public void doSomething() {
}
}
我已经尝试将beans.xml放在META-INF和WEB-INF中并将其删除,但都无济于事。我也尝试将bean的范围更改为单例等。我通过在使用BatchRuntime启动作业的方法上使用@Schedule注释来调用/启动批处理作业。
我必须遗漏一些简单的东西,因为我知道这应该有用。我将使用的bean的实际范围可能需要改变,但我想说的是我不相信bean范围是一个问题,但是其他一些配置问题。
我还应该注意,我只有1个StorageService实现。
答案 0 :(得分:0)
不清楚你的问题究竟是什么(注入CDI bean上的NPE?),但是注释你的Batchlet @Dependent
应该可以解决问题:
@Named
@Dependent
public class SimpleBatchlet extends AbstractBatchlet {
@Inject
protected StorageService storageService;
}
Batchlet
需要@Named
和@Dependent
才能与CDI集成。