SpringBeanAutowiringSupport与WebApplicationContextUtils

时间:2015-06-16 09:00:14

标签: spring jax-ws autowired

这是Web应用程序的上下文。我的Impl类有JAX-WS个注释,@Autowired注释不起作用。 检索Autowired对象时,我得到空指针异常。

找到解决方案,两者都有效:

  1. 扩展SpringBeanAutowiringSupport并保持@Autowired注释不变。
  2. 使用WebApplicationContextUtils获取加载bean的WebapplicationContext。来自此上下文的getBean()为我提供了所需的bean。
  3. 现在,SpringBeanAutowiringSupport类的文档在NOTE中说明 " 如果有一种明确的方式来访问ServletContext,那么更喜欢使用这个类。 WebApplicationContextUtils类允许基于ServletContext轻松访问Spring根Web应用程序上下文。"

    这是什么意思?在我的Web应用程序中,我没有使用任何servlet。我的Web应用程序也不仅仅是JAX-WS应用程序。它是一个包含SOAP/REST webservicesEJBs的网络应用程序。

    更喜欢哪种方法?为什么?请帮忙。

2 个答案:

答案 0 :(得分:0)

扩展SpringBeanAutoWiringSupport是spring文档中的首选方式。这个方法不是更好,因为你不必从webcontext显式访问bean吗?

http://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/html/remoting.html#remoting-web-services

答案 1 :(得分:0)

一个很好的使用示例是当您拥有一个Web服务并且您希望自动装配许多其他的Spring bean时。这看起来比使用Context Utils更优雅。

convertJsonDateTimeToJs: function (jsonDate) {
    var dateSlice = jsonDate.slice(6, 24);
    var milliseconds = parseInt(dateSlice);
    return new Date(milliseconds);
}