写这篇文章的原因:
主要是因为近期我自己在配置web的框架,通过视频,博客等途径去查询搭建的过程,但是越看越萌萌,其中就是在springmvc基于Java配置这块,
有的地方讲的是:
a.使用注解@EnableWebMvc
b.有的是继承WebMvcConfigurerAdapter类
c.有的是继承WebMvcConfigurationSupport类
d.有的是实现WebMvcConfigurer接口
这是在耍老子吗? 把我玩的团团转。到底是那个球子。
还是老老实实的来整理一下吧。
开始
传统的项目中有很多xml形式的配置文件,但是目前很多都已经不再使用xml,而是Java形式的配置类。今天在这里说的是代替springmvc.xml的Java配置类
@Configuration
@ComponentScan(basePackages = "com.bisy",useDefaultFilters = true,
includeFilters = {
@ComponentScan.Filter(type = FilterType.ANNOTATION,value = Controller.class)})
public class SpringMVCConfig{
//这里可以去配置视图解析器,配置一些无业务逻辑跳转等等等
}
首先@Configuration很熟悉了,就是标志这个类不是普通的类,而是一个配置类。
而属性useDefaultFilters :
use-default-filters 属性的默认值为 true,即使用默认的 Filter 进行包扫描,而默认的 Filter 对标有 @Service,@Controller和@Repository 的注解的类进行扫描。所以如果你希望 SpringMVC 只来控制网站的跳转逻辑,那就是只希望 SpringMVC 的配置扫描 @Controllerce 注解标注的类,不希望它扫描其余注解标注的类,所以设置 use-default-filters 为 false,并使用 context:include-filter 子标签设置其只扫描带有 @Controller 注解标注的类。
@ComponentScan,显而易见扫描,指定扫描包,主要是扫描controller(include包括)这里可以和spring的配置类ApplicationConfig做一下对比。
@Configuration
@ComponentScan(basePackages = “com.bisy”,useDefaultFilters = true,
excludeFilters = {@ComponentScan.Filter(type = FilterType.ANNOTATION,value = Controller.class)})
public class ApplicationConfig{
//
}
这里因为spring的配置不需要扫描controller,所以他exclude(排除)
今天主要讲的还是springmvc的配置类,的几种写法(Java形式配置类的几种写法)
1.继承WebMvcConfigurationSupport类
/**
* @ClassName SpringMVCConfig
* @Description TODO
* @Author BiShuYuan
* @Date 2020/4/24 15:15
* @Version 1.0
**/
@Configuration
@ComponentScan(basePackages = "com.bisy",useDefaultFilters = true,
includeFilters = {
@ComponentScan.Filter(type = FilterType.ANNOTATION,value = Controller.