Cloud-Lösungen der Zukunft - Testen!

Revolutionäre Cloud-Technologie, ganz ohne versteckte Kosten. Profitieren Sie von unserer Testphase und entdecken Sie umfassende Funktionen. Der Anmeldeprozess ist transparent und unkompliziert. Starten Sie jetzt Ihre Reise in die Cloud - Kostenfrei!

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.

Entdecken Sie die Cloud der Zukunft mit Unserer Kostenlosen Testversion

Entfesseln Sie das volle Potenzial Ihres Unternehmens mit unseren innovativen Cloud-Lösungen. Tauchen Sie ein in eine Welt der Effizienz, Skalierbarkeit und umfassenden Sicherheit mit unserer risikofreien kostenlosen Testversion.

Try for free!