作者:翔未央图_971 | 来源:互联网 | 2023-01-29 20:32
我在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 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();
但是,URL总是要求/services
在最前面,这很麻烦(但不是世界末日)。有什么方法可以删除/services
并将其部署到根上下文中吗?
1> Karthik Pras..:
如果尚未创建自己的CxfServlet
bean,则可以通过cxf.path
在application.properties文件中设置property 来设置路径。
cxf.path=/
另一种方法是覆盖ServletRegistrationBean
。
@Bean
public ServletRegistrationBean cxfServletRegistration() {
String urlMapping = "/*";
ServletRegistrationBean registration = new ServletRegistrationBean(
new CXFServlet(), urlMapping);
registration.setLoadOnStartup(-1);
return registration;
}