我正在尝试将 DAO 注入 CXF 服务。为此,我正在使用 xml 配置。
在我的 app-servlet.xml 中,我添加了以下条目:
<bean id="blogService" class="blog.BlogEntriesImpl">
<property name="blogDao" ref="blogDao" />
</bean>
blogDao bean 也在这个文件中定义。
该服务在另一个 xml 文件中配置:
<import resource="classpath:META-INF/cxf/cxf.xml" />
<jaxws:endpoint id="blogService" implementor="blog.BlogEntriesImpl"
address="/Blog1" />
BlogEntriesImpl 实现了服务接口。它有一个 dao 属性和一个 setter 方法。
我调试了应用程序并发现,BlogEntriesImpl 的一个实例在一开始就被实例化并且它具有 dao 属性。我会说它是由 app-servlet.xml 中的 bean 配置完成的。
但是,当我调用该服务时,会引发 NullPointerException。这是另一个正在使用的 BlogEntriesImpl 实例。
为了解决这个问题,我将服务实现类 (BlogEntriesImpl) 中的 dao 属性声明为静态。该变量在应用程序启动时设置。但我不喜欢这个解决方案。
有没有更好的方法将 dao 注入到 CXF 服务中?
先感谢您!