扩展SpringMVC
<mvc:view-controller path="/hello" view-name="success"/>
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/hello"/>
<bean></bean>
</mvc:interceptor>
</mvc:interceptors>
SpringBoot 2.1.15 开发文档的部分内容:
地址:
https://docs.spring.io/spring-boot/docs/2.1.15.RELEASE/reference/html/boot-features-developing-web-applications.html#boot-features-spring-mvc
段落:
原文1:
译文1:
如果你想要保持SpringBootMVC的特性,并且你想要添加额外的MVC 配置(拦截器,格式化器,视图控制器,和其它特性),你可以创建一个WebMvcConfigurer的子类并且使用@Configuration注解,但是不要使用@EnableWebMvc。
言外之意是,这种方法,既能保留自动配置,又可以使用扩展的配置。
译文1实践:
@EnableWebMvcConfiguration将所有的WebMvcConfigurer相关的配置都调用一下。
上面的configurers类型为WebMvcConfigurerComposite
原文2:
译文2:如果你想要完全的控制SpringMvc,你可以添加自己的实现类,标注@Configuration以及@EnableWebMVC
言外之意就是,结合@EnableWebMVC注解,会使SpringBoot的默认配置失效
译文2实践:
静态资源,index.html访问失效
为什么@EnableWebMVC就会使默认配置失效呢?
原来Import这个类之后,会想容器中注入对应的Bean,而且很多只是简单的new了一下就放进去了。
而前面我们知道,SpringBoot的默认配置方式是,先在容器中找是否有对应的Bean,如果没有才会去加载默认配置。
由于前面已经注入Bean了,所以SpringBoot的@ConditionalOnMissingBean的注入方式会导致默认配置无法被加载!