JAXB-generierte Elemente von Spring Boot Controller zurückgeben

Ich generiere eine Vielzahl von Java-Dateien aushttp: //www.ncpdp.orSD-Dateien von @ (nur für Mitglieder verfügbar). Nach dem Generieren würde ich sie gerne in meinen Spring Controllern verwenden, aber ich habe Probleme, Antworten in XML zu konvertieren.

Ich habe versucht, das Element selbst sowie JAXBElement <T> zurückzugeben, aber keines scheint zu funktionieren. Der folgende Test schlägt fehl:

java.lang.AssertionError: Status 
Expected :200
Actual   :406

@Test
public void testHelloWorld() throws Exception {
    mockMvc.perform(get("/api/message")
            .accept(MediaType.APPLICATION_XML)
            .contentType(MediaType.APPLICATION_XML))
            .andExpect(status().isOk())
            .andExpect(content().contentType(MediaType.APPLICATION_XML));
}

Hier ist mein Controller:

import org.ncpdp.schema.transport.MessageType;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloWorldController {

    @RequestMapping(value = "/api/message", method = RequestMethod.GET)
    public MessageType messageType() {
        return new MessageType();
    }
}

Ich habe versucht, eine MvcConfig zu erstellen, um die MVC-Konfiguration von Spring Boot zu überschreiben, aber sie scheint nicht zu funktionieren.

@Configuration
@EnableWebMvc
public class MvcConfig extends WebMvcConfigurerAdapter {

    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        converters.add(marshallingHttpMessageConverter());
    }

    @Bean
    public MarshallingHttpMessageConverter marshallingHttpMessageConverter() {
        Jaxb2Marshaller jaxb2Marshaller = new Jaxb2Marshaller();
        jaxb2Marshaller.setPackagesToScan(new String[]{"com.ncpdb.schema.transport"});

        MarshallingHttpMessageConverter converter = new MarshallingHttpMessageConverter();
        converter.setMarshaller(jaxb2Marshaller);
        converter.setUnmarshaller(jaxb2Marshaller);
        converter.setSupportedMediaTypes(Arrays.asList(MediaType.APPLICATION_XML));

        return converter;
    }
}

Was muss ich tun, damit Spring MVC meine generierten JAXB-Objekte als XML marshallt?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage