Willkommen bei Spring Restful Web Services XML und JSON Beispiel. Vor einiger Zeit habe ich einen Artikel über Spring REST JSON geschrieben und viele Kommentare erhalten, in denen nachgefragt wurde, wie das Programm geändert werden kann, um XML zu unterstützen. Ich habe auch einige E-Mails erhalten, in denen gefragt wurde, wie die Anwendung sowohl XML als auch JSON unterstützen kann.
Spring REST XML und JSON
I thought to write an article about Spring REST XML and JSON application where I will show you how easily we can extend the existing application to support XML. Since I will be making changes to the existing project, make sure you first download it from below link.
Spring Restful Webservice Projekt herunterladen
Führen Sie nun die folgenden Änderungen in der Spring Bean-Konfigurationsdatei durch.
-
Definieren Sie eine Bean vom Typ
Jaxb2RootElementHttpMessageConverter
.<beans:bean id="xmlMessageConverter" class="org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter"> </beans:bean>
-
Fügen Sie die oben konfigurierte Bean zur
RequestMappingHandlerAdapter
-EigenschaftmessageConverters
hinzu.<beans:bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> <beans:property name="messageConverters"> <beans:list> <beans:ref bean="jsonMessageConverter"/> <beans:ref bean="xmlMessageConverter"/> </beans:list> </beans:property> </beans:bean>
Nach den oben genannten Änderungen sieht unsere endgültige Spring-Bean-Konfigurationsdatei wie folgt aus. servlet-context.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="https://www.springframework.org/schema/mvc"
xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xmlns:beans="https://www.springframework.org/schema/beans"
xmlns:context="https://www.springframework.org/schema/context"
xsi:schemaLocation="https://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd
https://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
https://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
<!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure -->
<!-- Enables the Spring MVC @Controller programming model -->
<annotation-driven />
<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
<resources mapping="/resources/**" location="/resources/" />
<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<beans:property name="prefix" value="/WEB-INF/views/" />
<beans:property name="suffix" value=".jsp" />
</beans:bean>
<!-- Configure to plugin JSON as request and response in method handler -->
<beans:bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<beans:property name="messageConverters">
<beans:list>
<beans:ref bean="jsonMessageConverter"/>
<beans:ref bean="xmlMessageConverter"/>
</beans:list>
</beans:property>
</beans:bean>
<!-- Configure bean to convert JSON to POJO and vice versa -->
<beans:bean id="jsonMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
</beans:bean>
<beans:bean id="xmlMessageConverter" class="org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter">
</beans:bean>
<context:component-scan base-package="com.journaldev.spring.controller" />
</beans:beans>
Wir wissen, dass wir für die Arbeit mit JAXB-Marshalling für eine Klasse diese mit der Annotation @XmlRootElement
versehen müssen. Fügen Sie dies also unserer Modellklasse Employee
hinzu. Employee.java
@XmlRootElement
public class Employee implements Serializable{
//Keine Änderung im Code
}
Das ist es, wir sind FERTIG. Unsere Spring-Anwendung wird sowohl JSON als auch XML unterstützen. Sie wird sogar XML-Anfragen mit JSON-Antwort und umgekehrt unterstützen. Hier sind einige Screenshots, die dies in Aktion zeigen. HINWEIS: Ich verwende die Postman Chrome-Anwendung dafür, Sie können für diesen Test jeden REST-Client verwenden. 1. XML-Antwort: Stellen Sie sicher, dass Sie den Accept-Header als „application/xml“ übergeben. 2. JSON-Antwort: Stellen Sie sicher, dass Sie den Accept-Header als „application/json“ übergeben.
3. XML-Anfrage mit JSON-Antwort: Stellen Sie sicher, dass der Accept-Header „application/json“ und der Content-Type-Header „text/xml“ ist, wie in den folgenden Bildern gezeigt.
Das ist alles für das Beispiel für Spring RESTful Web Services, das sowohl XML als auch JSON unterstützt. Sie können sehen, wie einfach es ist, das Spring-Framework zu erweitern, dies ist einer der Hauptgründe für die Popularität des Spring-Frameworks.
Source:
https://www.digitalocean.com/community/tutorials/spring-rest-xml-and-json-example