如何将spring bean注入CXFServlet扩展类

时间:2014-12-12 05:18:22

标签: spring web-services rest cxf

我有一个休息网络服务。在webservice开始,我必须启动一些其他服务。我决定扩展org.apache.cxf.transport.servlet.CXFServlet类,然后启动这些服务。到目前为止,我已经扩展了课程并且现在正在工作。

如何将spring bean注入此扩展类

我的servlet

public class RestUIServlet extends CXFServlet {

   @Autowired
   private Util util; // Problem is to inject this.

   public RestUIServlet() {
        super();
       //TODO : Initialize service here
   }
}

我的web.xml

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>WEB-INF/beans.xml</param-value>
</context-param>
<listener>
    <listener-class>
        org.springframework.web.context.ContextLoaderListener
    </listener-class>
</listener>
<servlet>
    <servlet-name>CXFServlet</servlet-name>
    <servlet-class>
        test.RestUIServlet
    </servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>CXFServlet</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

我的beans.xml

<import resource="classpath:META-INF/cxf/cxf.xml"/>
<import resource="classpath:spring/springContext.xml"/>
<context:property-placeholder/>
<context:annotation-config/>
<bean class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer"/>
<bean class="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer"/>

<jaxrs:server id="services" address="/">
    <jaxrs:serviceBeans>
        <ref bean="uiServiceImpl"/>
    </jaxrs:serviceBeans>
    <jaxrs:providers>
        <bean class="org.codehaus.jackson.jaxrs.JacksonJsonProvider"/>
    </jaxrs:providers>
</jaxrs:server>

<bean id="uiServiceImpl" class="test.UIServiceImpl"/>

我正在使用cxf 3.0.0

1 个答案:

答案 0 :(得分:0)

您尝试执行以下两个步骤。

  1. 在beans.xml中添加<context:component-scan base-package="<package name>" />,此条目将扫描/读取上述包中java类的所有立体声类型注释。

  2. 在班级添加@Component

  3. 我希望这会解决问题。