使用Spring Boot的Apache CXF jax-rs:如何自动配置拦截器

20帧/秒

我使用Spring Boot使用CXF Rest Api,所以这是我的application.properties:

cxf.path=/
cxf.jaxrs.server.address=/api
cxf.jaxrs.component-scan=true
cxf.jaxrs.classes-scan-packages=org.apache.cxf.jaxrs.swagger,org.apache.cxf.metrics

我的端点注释为@Component,但问题是我不仅拥有组件或提供程序,而且还拥有ExceptionMappers,输入/输出/故障拦截器。

现在我想知道是否也可以通过属性文件进行配置。

而且我知道可能的解决方案(不要向我提出这一解决方案):

@Bean
public Server rsServer() {
  final JAXRSServerFactoryBean endpoint = new JAXRSServerFactoryBean();

  endpoint.setInInterceptors(Arrays.<Interceptor<? extends Message>>asList(
    interceptor1,
    interceptor2,
    interceptor3
  ));

  endpoint.setOutInterceptors(Arrays.<Interceptor<? extends Message>>asList(out1));
  endpoint.setOutFaultInterceptors(Arrays.<Interceptor<? extends Message>>asList(out1));

  endpoint.setProviders(Arrays.asList(
    provider1(),
    provider2()
  ));

  endpoint.setBus(bus);

  endpoint.setAddress("/api");

  endpoint.setServiceBeans(Arrays.asList(
    endpoint1,
    endpoint2,
    ...,
    endpointN
  ));

  endpoint.setFeatures(Arrays.asList(new Swagger2Feature()));
  return endpoint.create();
}

就可以自动配置许多功能而言,这一点都不酷,现在,对于某些其他配置,我必须手动配置所有功能。

它完全扼杀了使用Spring Boot的目的。所以..有什么建议吗?

卡尔提克·普拉萨德(Karthik Prasad)

请检查CxfAutoConfiguration.javaAbstractSpringComponentScanServer.java,您无需手动创建服务器Bean,AutoConfiguration会为您完成,您只需设置属性cxf.jaxrs.component-scan=true,它将添加所有带注释的spring Bean@Path添加@Provider到服务器实例。如果您有自定义拦截器,请通过添加@Component使其成为bean @Provider(//with type)对于一般的Swagger和Metrics,我使用来创建bean @Bean,请在此处查看示例

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章