2016-04-04 7 views
1

Mit einem Spring Boot REST-Endpunkt scheint es, wenn JAXB verfügbar ist, reicht die Übergabe des 'Accept'-Headers von' application/xml 'aus, um die Ausgabe von einem sehr einfachen Endpunkt als XML zu empfangen, solange die @ Xml. .. Anmerkungen sind auf der Entität vorhanden. Ich verwende JavaConfig mit Anmerkungen und diese Nachricht AbhängigkeitenWas ist der einfachste Weg, eine Spring Boot JMS-Anwendung so zu konfigurieren, dass sie ein JAXB-Marshalling als Standard verwendet?

@RequestMapping(value = "/thing/{id}") 
ResponseEntity<Thing> getThing(
     @PathVariable(value = "id") String id) { 
    Thing thing = thingService.get(id) 

    return new ResponseEntity<Thing>(thing, HttpStatus.OK); 
} 

Wenn jedoch jmsTemplate.convertAndSend(destination, thing) Aufruf, ich habe ausdrücklich auf die JMS-Vorlage in einem Nachrichtenwandler anschließen, die den folgenden Code innerhalb

 JAXBContext context = JAXBContext.newInstance(object.getClass()); 
     Marshaller marshaller = context.createMarshaller(); 
     StringWriter writer = new StringWriter(); 
     marshaller.marshal(object, writer); 

     TextMessage textMessage = session.createTextMessage(writer.toString()); 

     return textMessage; 

hat zur Zeit:

compile("org.springframework:spring-jms") 
compile('org.springframework.integration:spring-integration-jms') 
compile("org.apache.activemq:activemq-broker") 

Auch diese von Spring Boot Starter aber nicht sicher, ob sie hier wichtig sind.

compile('org.springframework.boot:spring-boot-starter-actuator') 
compile('org.springframework.boot:spring-boot-starter-data-jpa') 
compile('org.springframework.boot:spring-boot-starter-hateoas') 

Ich verwende auch Groovy und Spock.

Es scheint, als gäbe es sicherlich eine Möglichkeit, dieses Marshalling standardmäßig ohne Code durchzuführen. Vorschläge?

Antwort

3

Ich endete mit dem expliziten Einstecken des Jaxb2Marshaller aus dem Spring OXM-Framework. Ich machte es ziemlich klobig, da ich SpringBoot und Annotation basierte Konfiguration und die Beispiele waren alle XML.

Ich würde gerne noch einfacher machen, aber ich fürchte, das wird für jetzt tun müssen.