2015-08-13 21 views
5

Nella mia applicazione Spring Boot con tipo di pacchetto come war, sto configurando Spring MVC. Come ho capito, non dobbiamo configurare manualmente Servlet Dispatcher. Tuttavia, ho vecchio stile di web.xml ho usato per configurare Dispatcher Servlet e poi ho usato per passare contextClass e contextConfigLocation come segueServlet Dispatcher in Spring Boot

<servlet> 
    <description> 
    </description> 
    <display-name>DispatcherServlet</display-name> 
    <servlet-name>DispatcherServlet</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <init-param> 
     <description>contextClass</description> 
     <param-name>contextClass</param-name> 
     <param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value> 
    </init-param> 
    <init-param> 
     <description>contextConfigLocation</description> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>com.xxx.yyy.jdorderspringmvcweb.config.SpringMvcConfig</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet>  

I belive questo era per indicare che SpringMvcConfig (la mia classe personalizzata con la configurazione MVC primavera) è la classe di configurazione per Spring MVC.

Tuttavia, in avvio di primavera se Dispatcher Servlet è configurato automaticamente, come posso passare la mia classe personalizzata a Servlet dispatcher?

Nella mia applicazione Stivale Primavera, la mia classe SpringMvcConfig estende da WebMvcConfigurerAdapter e viene annotato con classe @Configuration

aiuto necessario ...

risposta

-1

Se la classe di configurazione si trova nella stessa confezione o un sub-package della classe principale (annotata con @SpringBootApplication), non è necessario fare nulla. @SpringBootApplication analizza tutti i componenti nel pacchetto e tutti i sottoprogetti.

Tuttavia, se si desidera scansionare altri pacchetti, è possibile utilizzare @ComponentScan. Un esempio:

@Configuration 
@EnableAutoConfiguration 
@ComponentScan(basePackageClasses = {SpringSampleAppApplication.class, LemonConfig.class}) 
public class SpringSampleAppApplication { 

    public static void main(String[] args) { 
     SpringApplication.run(SpringSampleAppApplication.class, args); 
    } 

} 

Vedere come @SpringBootApplication è sostituito da tre annotazioni, con un costume @ComponentScan.

Esistono anche altri metodi per importare i file di configurazione, ma trovo il più semplice degli scenari comuni.

+0

Non risponde alla domanda. –

+0

Sì, non è così! Non sono sicuro del motivo per cui ho risposto in questo modo - forse la domanda è stata modificata in seguito? – Sanjay

0

Proprio nella classe di configurazione annotata da @Configuration è possibile definire il dispatcherServlet e passare ad esso il parametro init.

@Bean 
public ServletRegistrationBean dispatcherServletRegistration() { 
    ServletRegistrationBean registrationBean = new ServletRegistrationBean(dispatcherServlet()); 
    registrationBean.addInitParameter("contextClass","org.springframework.web.context.support.AnnotationConfigWebApplicationContext"); 
    registrationBean.addInitParameter("contextConfigLocation","com.xxx.yyy.jdorderspringmvcweb.config.SpringMvcConfig"); 
    return registrationBean; 
} 

Un altro modo sarebbe creare una mappa di parametri e quindi impostare il parametro per il bean di registrazione. Lo stream This mostra come farlo.

+1

Non hai risposto alla domanda. Il tuo codice mostra 'dispatcherServlet()' ma non viene fornita alcuna indicazione su cosa sia o come sia definito - che è quello che chiede la domanda. –