繁体   English   中英

@Resource注释生成NPE

[英]@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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM