Spring REST XML und JSON Beispiel

Vor einiger Zeit schrieb ich einen Artikel über Spring REST JSON und erhielt viele Kommentare mit der Frage, wie das Programm geändert werden kann, um XML zu unterstützen. Ich erhielt auch einige E-Mails mit der Frage, wie man die Anwendung sowohl XML als auch JSON unterstützen lässt.

Spring REST XML und JSON

Führen Sie nun folgende Änderungen in der Spring Bean-Konfigurationsdatei durch.

1. Definieren Sie einen Bean vom Typ Jaxb2RootElementHttpMessageConverter

<beans:bean id="xmlMessageConverter" class="org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter">
</beans:bean>

2. Fügen Sie den konfigurierten Bean zum RequestMappingHandlerAdapter 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 finale 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: definiert die Anfrageverarbeitungsinfrastruktur dieses Servlets -->
    <!-- Aktiviert das Spring MVC @Controller-Programmiermodell -->
    <annotation-driven />
    <!-- Verarbeitet HTTP-GET-Anfragen für /resources/**, indem statische Ressourcen im Verzeichnis ${webappRoot}/resources effizient bereitgestellt werden -->
    <resources mapping="/resources/**" location="/resources/" />
    <!-- Löst Ansichten aus, die von @Controllers zur Darstellung ausgewählt wurden, zu .jsp-Ressourcen im Verzeichnis /WEB-INF/views -->
    <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>
    <!-- Konfiguriert das Plugin für JSON als Anfrage- und Antwortverarbeitung im Methodenhandler -->
    <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>
    <!-- Konfiguriert den Bean, um JSON in POJO umzuwandeln und umgekehrt -->
    <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 für das Arbeiten mit JAXB-Marshalling für eine Klasse, diese mit der Annotation @XmlRootElement annotiert werden muss. Fügen Sie dies also unserer Employee-Modellklasse hinzu. Employee.java

@XmlRootElement
public class Employee implements Serializable{
//keine Änderung im Code
}

Das war’s, 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. Unten sind einige Screenshots, die dies in Aktion zeigen. HINWEIS: Ich verwende für diese Tests die Postman Chrome-Anwendung, Sie können aber jeden beliebigen 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.

Fazit

Das ist alles für das Spring Restful-Webdienste-Beispiel zur Unterstützung von sowohl XML als auch JSON. Sie können sehen, wie einfach es ist, das Spring-Framework zu erweitern, dies ist einer der Hauptgründe für die Beliebtheit des Spring-Frameworks.

Kostenlosen Account erstellen

Registrieren Sie sich jetzt und erhalten Sie Zugang zu unseren Cloud Produkten.

Das könnte Sie auch interessieren:

centron Managed Cloud Hosting in Deutschland

Hibernate SessionFactory: Methoden und Vorteile erklärt

JavaScript, Tutorial
Hibernate SessionFactory Hibernate SessionFactory ist die Factory-Klasse, über die wir Sitzungen erhalten und Datenbankoperationen durchführen können. Content1 Hibernate SessionFactory2 Fazit Hibernate SessionFactory Hibernate SessionFactory stellt drei Methoden bereit, mit denen…