Spring boot Spring Boot Apache CXF JAX-RS服务上下文路径/基本URI

Spring boot Spring Boot Apache CXF JAX-RS服务上下文路径/基本URI,spring-boot,jax-rs,cxf,Spring Boot,Jax Rs,Cxf,我在Spring Boot中配置JAXRS服务器,如下所示: JAXRSServerFactoryBean factoryBean = new JAXRSServerFactoryBean(); factoryBean.setBus(this.bus); factoryBean.setFeatures(singletonList(swagger2Feature())); factoryBean.setServiceBeans(Arrays.asList(blah(

我在Spring Boot中配置JAXRS服务器,如下所示:

    JAXRSServerFactoryBean factoryBean = new JAXRSServerFactoryBean();
    factoryBean.setBus(this.bus);
    factoryBean.setFeatures(singletonList(swagger2Feature()));
    factoryBean.setServiceBeans(Arrays.asList(blah(), blah2(), blah3()));
    factoryBean.setAddress("/api/v1/"); // HERE

    List<Object> providers = new ArrayList<>();
    providers.add(new JacksonJaxbJsonProvider());
    factoryBean.setProviders(providers);

    BindingFactoryManager manager = factoryBean.getBus().getExtension(BindingFactoryManager.class);
    JAXRSBindingFactory restFactory = new JAXRSBindingFactory();
    restFactory.setBus(factoryBean.getBus());
    manager.registerBindingFactory(JAXRSBindingFactory.JAXRS_BINDING_ID, restFactory);

    return factoryBean.create();
jaxserverFactoryBean factoryBean=new jaxserverFactoryBean();
factoryBean.setBus(this.bus);
setFeatures(singletonList(swagger2Feature());
setServiceBeans(Arrays.asList(blah(),blah2(),blah3());
factoryBean.setAddress(“/api/v1/”);//在这里
列表提供程序=新的ArrayList();
add(新的JacksonJaxbJsonProvider());
setProviders(提供者);
BindingFactoryManager=factoryBean.getBus().getExtension(BindingFactoryManager.class);
JAXRSBindingFactory restFactory=新的JAXRSBindingFactory();
setBus(factoryBean.getBus());
registerBindingFactory(JAXRSBindingFactory.JAXRS\u BINDING\u ID,restFactory);
返回factoryBean.create();

然而,URL总是需要
/services
在前面,这是一个麻烦(但不是世界末日)。是否有任何方法可以删除
/services
并将其部署到根上下文中?

如果您尚未创建自己的
CxfServlet
bean,则可以通过在application.properties文件中设置
cxf.path
属性来设置路径

cxf.path=/
另一种方法是重写
ServletRegistrationBean

@Bean
public ServletRegistrationBean cxfServletRegistration() {
    String urlMapping = "/*";
    ServletRegistrationBean registration = new ServletRegistrationBean(
            new CXFServlet(), urlMapping);
    registration.setLoadOnStartup(-1);
    return registration;
}