[英]@Resource annotation producing NPE
我“继承”了一个带有spring-ws服务的大型Spring应用程序。
该服务是典型的Spring-WS代码:
package service;
@Endpoint
public class ServiceEndpoint {
@Resource EntityDao entityDao;
@PayloadRoot(localPart=...)
@ResponsePayload
public ResponseWrapperClass getServiceMethod(@RequestPayload RequestWrapperClass request) {
return new ResponseProcessorClass(request).generateResponse();
}
}
该服务非常庞大,并且在类中广泛使用了注入@Resource批注的EntityDao。
因为我正在使用的特定方法有点复杂,所以我将其封装在子包中的单独类中。
ResponseProcessorClass看起来像这样:
package service.business;
@Component
public class ResponseProcessorClass {
@Resource EntityDao entityDao;
public ResponseWrapperClass generateResponse() {
entityDao.getSomeData(); //encapsulates hibernate logic -> Null Pointer Exception
}
}
从上面的评论中可以看到,在新类中使用@Resource批注时,出现了空指针异常。
我以前没有使用过此批注,但是根据我从文档中了解的内容 ,应该推断并注入类型。 我也无法在任何XML文件中找到任何配置。
谁能告诉我为什么我要获得NPE?
Spring只能将Spring托管的bean注入到Spring托管的bean中。 因此,如果您自己创建对象,Spring对此将无能为力。 这个
return new ResponseProcessorClass(request).generateResponse();
是问题。 您期望Spring注入您创建的ResponseProcessorClass
对象的字段。
尝试注入原型bean而不是自己创建它。 这取决于您的ResponseProcessorClass
类。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.