首页 文章

Spring Boot中的Dispatcher Servlet

提问于
浏览
7

在包装类型为war的Spring Boot应用程序中,我正在配置Spring MVC . 据我所知,我们不必手动配置Dispatcher Servlet . 但是,我用旧的web.xml样式我用来配置Dispatcher Servlet然后我用来传递contextClass和contextConfigLocation如下

<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>

我相信这是为了表明SpringMvcConfig(我的Spring mvc配置的自定义类)是Spring MVC的配置类 .

但是,在Spring boot中,如果自动配置Dispatcher Servlet,我如何将自定义类传递给调度程序Servlet?

在我的Spring Boot应用程序中,我的SpringMvcConfig类从WebMvcConfigurerAdapter扩展并使用@Configuration类进行注释

需要帮助...

2 回答

  • 0

    如果您的配置类位于同一个包或主类的子包中(使用 @SpringBootApplication 注释),则无需执行任何操作 . @SpringBootApplication 扫描包中的所有组件和所有子包 .

    但是,如果要扫描任何其他包,可以使用 @ComponentScan . 一个例子:

    @Configuration
    @EnableAutoConfiguration
    @ComponentScan(basePackageClasses = {SpringSampleAppApplication.class, LemonConfig.class})
    public class SpringSampleAppApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(SpringSampleAppApplication.class, args);
        }
    
    }
    

    通过自定义 @ComponentScan 查看 @SpringBootApplication 如何被三个注释替换 .

    还有其他方法可以导入配置文件,但我发现以上最简单的常见方案 .

  • 0

    在由@Configuration注释的配置类中,您可以定义dispatcherServlet并将init-parameter传递给它 .

    @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;
    }
    

    另一种方法是创建一个参数图,然后为注册bean设置参数 . This stream显示了如何做到这一点 .

相关问题