如何配置默认的 DispatcherServlet?

bep*_*bep 2 spring-boot

throwExceptionIfNoHandlerFoundDispatcherServlet在 Spring 4.0 中引入。

我试图弄清楚如何在DispatcherServletSpring Boot 提供的自动配置中设置这个属性,但没有运气。

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

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

        }
    };
}  
Run Code Online (Sandbox Code Playgroud)

M. *_*num 5

使用 aBeanPostProcessor您可以在构建/初始化阶段之后修改 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;
    }
}

然后只需将此作为 a 添加@Bean到您的配置中。