具有 Spring Javaconfig 和 Jackson 的 Apache CXF (JAX-RS)
Apache CXF (JAX-RS) with Spring Javaconfig and Jackson
如何使用 JAX-RS 设置 Apache CXF SpringJavaconfig 和 Jackson?
我读过了
http://cxf.apache.org/docs/springboot.html#SpringBoot-SpringBootCXFJAX-RSStarter 和
http://cxf.apache.org/docs/jax-rs-data-bindings.html#JAX-RSDataBindings-Jackson
建议使用
<jaxrs:providers>
<bean class="org.codehaus.jackson.jaxrs.JacksonJsonProvider"/>
</jaxrs:providers>
但我想远离 XML 并使用纯 javaconfig。
我目前的配置是
@SpringBootApplication
public class Application {
@Autowired
private Bus bus;
public static void main(String[] args) {
SpringApplication.run(Application .class, args);
}
@Bean
public Server rsServer() {
JAXRSServerFactoryBean endpoint = new JAXRSServerFactoryBean();
endpoint.setBus(bus);
endpoint.setAddress("/");
endpoint.setServiceBeans(Arrays.<Object>asList(new MyService()));
return endpoint.create();
}
}
Andpoint 在我的 class MyService 中定义有效,但是当他被调用时我收到消息
org.apache.cxf.jaxrs.utils.JAXRSUtils : No message body writer has
been found for class MyServiceResponse,
ContentType: application/json;charset=UTF-8
您需要添加一个 json 提供者 bean。这将充当消息提供者。您的申请 class 应如下所示。
import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider
@SpringBootApplication
public class Application {
@Autowired
private Bus bus;
public static void main(String[] args) {
SpringApplication.run(Application .class, args);
}
@Bean
public Server rsServer() {
List<? extends Object> providers = new ArrayList<>();
providers.add(getJsonProvider());
JAXRSServerFactoryBean endpoint = new JAXRSServerFactoryBean();
endpoint.setProviders(providers);
endpoint.setBus(bus);
endpoint.setAddress("/");
endpoint.setServiceBeans(Arrays.asList(new MyService()));
return endpoint.create();
}
@Bean
public JacksonJsonProvider getJsonProvider() {
new JacksonJsonProvider();
}
}
如何使用 JAX-RS 设置 Apache CXF SpringJavaconfig 和 Jackson? 我读过了 http://cxf.apache.org/docs/springboot.html#SpringBoot-SpringBootCXFJAX-RSStarter 和 http://cxf.apache.org/docs/jax-rs-data-bindings.html#JAX-RSDataBindings-Jackson
建议使用
<jaxrs:providers>
<bean class="org.codehaus.jackson.jaxrs.JacksonJsonProvider"/>
</jaxrs:providers>
但我想远离 XML 并使用纯 javaconfig。
我目前的配置是
@SpringBootApplication
public class Application {
@Autowired
private Bus bus;
public static void main(String[] args) {
SpringApplication.run(Application .class, args);
}
@Bean
public Server rsServer() {
JAXRSServerFactoryBean endpoint = new JAXRSServerFactoryBean();
endpoint.setBus(bus);
endpoint.setAddress("/");
endpoint.setServiceBeans(Arrays.<Object>asList(new MyService()));
return endpoint.create();
}
}
Andpoint 在我的 class MyService 中定义有效,但是当他被调用时我收到消息
org.apache.cxf.jaxrs.utils.JAXRSUtils : No message body writer has been found for class MyServiceResponse, ContentType: application/json;charset=UTF-8
您需要添加一个 json 提供者 bean。这将充当消息提供者。您的申请 class 应如下所示。
import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider
@SpringBootApplication
public class Application {
@Autowired
private Bus bus;
public static void main(String[] args) {
SpringApplication.run(Application .class, args);
}
@Bean
public Server rsServer() {
List<? extends Object> providers = new ArrayList<>();
providers.add(getJsonProvider());
JAXRSServerFactoryBean endpoint = new JAXRSServerFactoryBean();
endpoint.setProviders(providers);
endpoint.setBus(bus);
endpoint.setAddress("/");
endpoint.setServiceBeans(Arrays.asList(new MyService()));
return endpoint.create();
}
@Bean
public JacksonJsonProvider getJsonProvider() {
new JacksonJsonProvider();
}
}