如何配置默认的DispatcherServlet?

时间:2014-08-24 18:18:34

标签: spring-boot

throwExceptionIfNoHandlerFound在Spring 4.0中的DispatcherServlet中引入。

我试图找出如何在Spring Boot提供的autoconfigured DispatcherServlet中设置此属性,但没有运气。

有些挖掘表明下面的代码片段应该有效,但事实并非如此。

@Bean
public ServletContextInitializer servletContextInitializer() {
    return new ServletContextInitializer() {
        @Override
        public void onStartup(ServletContext servletContext) throws ServletException {
            servletContext.setInitParameter("throwExceptionIfNoHandlerFound", "true");

        }
    };
}  

2 个答案:

答案 0 :(得分:3)

使用BeanPostProcessor,您可以在构建/初始化阶段后修改bean。您可以编写BeanPostProcessor,只修改DispatcherServlet


public class DispatcherServletConfigurer implements BeanPostProcessor {

    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
         if (bean instanceof DispatcherServlet) {
             ((DispatcherServlet) bean).setThrowExceptionIfNoHandlerFound(true);
         }
         return bean;
    }

    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        return bean;
    }
}

然后只需将此@Bean添加到您的配置中即可。

答案 1 :(得分:0)

尝试添加@Bean类型DispatcherServlet并直接设置您需要的任何属性。