2016-05-10 5 views
2

In der traditionellen Spring MVC, kann ich WebMvcConfigurationSupport erweitern und wie folgt vorgehen:Was ist der WebMvcConfigurationSupport-Ersatz im Spring Boot?

@Override 
public void configureContentNegotiation(ContentNegotiationConfigurer configurer) { 
    configurer.favorPathExtension(false). 
    favorParameter(true). 
    defaultContentType(MediaType.APPLICATION_JSON). 
    mediaType("xml", MediaType.APPLICATION_XML); 
} 

Wie kann ich tue dies in einem Frühlings-Boot-app? Mein Verständnis ist, dass das Hinzufügen eines WebMvcConfigurationSupport mit @EnableWebMvc wird die Spring Boot WebMvc Autokonfiguration deaktivieren, die ich nicht möchte.

Antwort

5

Per Frühling Boot-Referenz auf auto configuration and Spring MVC:

Wenn Sie die vollständige Kontrolle über Spring MVC nehmen möchten, können Sie Ihre eigenen @Configuration mit @EnableWebMvc kommentierten hinzufügen. Wenn Sie die Spring Boot MVC-Funktionen beibehalten und nur eine zusätzliche MVC-Konfiguration (Interzeptoren, Formatierer, View-Controller usw.) hinzufügen möchten, können Sie Ihren eigenen @Bean vom Typ WebMvcConfigurerAdapter hinzufügen, jedoch ohne @EnableWebMvc.

Zum Beispiel, wenn Sie Frühling Stiefel ist die automatische Konfiguration halten wollen, und passen Sie ContentNegotiationConfigurer:

@Configuration 
public class WebMvcConfig extends WebMvcConfigurerAdapter { 

    ... 
    @Override 
    public void configureContentNegotiation(ContentNegotiationConfigurer configurer) { 
     super.configureContentNegotiation(configurer); 
     configurer.favorParameter(..); 
     ... 
     configurer.defaultContentType(..); 
    } 
} 
+0

Du hast Recht und ich wusste, dass aber die Klasse ich zur Zeit erstreckt, ist nicht 'WebMvcConfigurerAdapter' aber 'WebMvcConfigurationSupport'. Das letztere bietet Konfigurationsoptionen, die erstere nicht hat. –

+0

Ich glaube nicht, dass es möglich ist, einen Teil der WebMvcAutoConfiguration von Spring Boot zu verwenden und Ihren eigenen WebMvcConfigurationSupport bereitzustellen, da Spring Boot nur dann automatisch konfiguriert wird, wenn WebMvcConfigurationSupport nicht vorhanden ist. Ich denke, einer der Vorteile von Spring Boot ist die automatische Konfiguration. Ich würde versuchen, WebMvcConfigurerAdapter zu verwenden, und für Optionen, die NICHT unterstützt werden, verwenden Sie eine Art BeanPostProcessor, um es manuell anzupassen. – ikumen

+0

Ich werde das versuchen. Da deine Antwort nicht genau das ist, wonach ich gesucht habe, akzeptiere ich sie jetzt nicht, aber ich werde sie verbessern. Wenn das klappt, nehme ich später Ihre Antwort an. –