Spring + Apache CXF:SearchContextProvider未初始化

时间:2016-02-16 14:18:27

标签: spring jax-rs cxf

我正在将Spring Boot与Apache CXF集成。 Everyhthing还可以,但是我无法让SearchContext在控制器内工作:

@Context
private SearchContext context;

public @ResponseBody List<Users> getAll(@Context SearchContext context, @RequestParam String search){
    ....
}

SearchContext未正确注入,因为SearchContextProvider未在包org.apache.cxf.jaxrs.ext.search中创建。

我正在使用这个Bean启动CXF Servlet:

@Bean
public ServletRegistrationBean cxfServlet() {
    CXFServlet cxf = new CXFServlet();
    ServletRegistrationBean registration = new ServletRegistrationBean(cxf, "/api/*");
    return registration;
}

我使用的是基于Java的配置,没有XML。 在基于XML的配置中,似乎需要此标记:

<jaxrs:providers>
        <bean class="org.apache.cxf.jaxrs.ext.search.SearchContextProvider"/>
</jaxrs:providers>

如何在基于Java的servlet配置中声明提供程序?

1 个答案:

答案 0 :(得分:0)

在主配置类中,添加:

@ComponentScan("org.apache.cxf.jaxrs")

由于类(SearchContextProvider)已经注释了@Provider注释,因此如果正在扫描,Spring将能够将其选中。假设您已经在自己的包上进行了组件扫描,您可以添加jaxrs包,如:

@ComponentScan({ "com.something", "org.apache.cxf.jaxrs" })