我"继承"了一个带有 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注解的实体道在类中被广泛使用。
因为我正在研究的特定方法有点复杂,所以我已将其封装在子包中的单独类中。
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 对此无能为力。这
return new ResponseProcessorClass(request).generateResponse();
是问题所在。你希望 Spring 注入你创建的ResponseProcessorClass
对象的字段。
尝试注入原型 bean,而不是自己创建它。这取决于您的ResponseProcessorClass
类。