使用

@EnableWebMvc
@SpringBootApplication
public class Application  {public static void main(String[] args) {log.debug("access {}","main");SpringApplication.run(Application.class, args);}
}

WebMvcConfigurerAdapter 实现类,配置跨域,添加静态页面等功能

@Configuration
public class WebMvcConfig extends WebMvcConfigurerAdapter {@AutowiredRedisData redisData;@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");}@Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping("/**").allowedOrigins("*").allowCredentials(true).allowedMethods("GET", "POST", "DELETE", "PUT").maxAge(3600);}}

原理

@EnableWebMvc注解注入了DelegatingWebMvcConfiguration的bean

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
@Documented
@Import({DelegatingWebMvcConfiguration.class})
public @interface EnableWebMvc {
}

启动加载所有WebMvcConfigurer实例

@Configuration
public class DelegatingWebMvcConfiguration extends WebMvcConfigurationSupport {private final WebMvcConfigurerComposite configurers = new WebMvcConfigurerComposite();public DelegatingWebMvcConfiguration() {}@Autowired(required = false)public void setConfigurers(List<WebMvcConfigurer> configurers) {if(!CollectionUtils.isEmpty(configurers)) {this.configurers.addWebMvcConfigurers(configurers);}}
...
}

WebMvcConfigurerComposite 使用组合模式,是树枝节点


class WebMvcConfigurerComposite implements WebMvcConfigurer {private final List<WebMvcConfigurer> delegates = new ArrayList();WebMvcConfigurerComposite() {}public void addWebMvcConfigurers(List<WebMvcConfigurer> configurers) {if(!CollectionUtils.isEmpty(configurers)) {this.delegates.addAll(configurers);}}

@EnableWebMvc启动springmvc特性相关推荐

  1. 如何用Java类配置Spring MVC(不通过web.xml和XML方式)

    DispatcherServlet是Spring MVC的核心,按照传统方式, 需要把它配置到web.xml中. 我个人比较不喜欢XML配置方式, XML看起来太累, 冗长繁琐. 还好借助于Servl ...

  2. Springboot环境下mybatis配置多数据源配置

    mybatis多数据源配置(本文示例为两个),方便实现数据库的读写分离,分库分表功能 本文基于springboot2进行的配置,如版本为springboot1系列则需修改yml的配置(在文末附带) m ...

  3. Springboot 整合mybatis,实现多数据读写分离分库分表

    mybatis多数据源配置(本文示例为两个),方便实现数据库的读写分离,分库分表功能 本文基于springboot2进行的配置,如版本为springboot1系列则需修改yml的配置(在文末附带) m ...

  4. SpringMVC源码分析_1 SpringMVC容器启动和加载原理

                                                                    SpringMVC源码分析_1 SpringMVC启动和加载原理     ...

  5. SpringMVC通过注解方式读取properties文件中的值

    为什么80%的码农都做不了架构师?>>>    本方法是结合Java配置及XML配置来完成. 首先定义XML配置文件 app.xml: <?xml version=" ...

  6. eclipse maven 构建简单springmvc项目

    环境:eclipse Version: Oxygen.3a Release (4.7.3a) 创建maven Project项目,目录结构 修改工程的相关编译属性 修改pop.xml,引入spring ...

  7. 学习搭建maven风格的springmvc项目(一)——入门

     step1:首先在eclispe中新建一个maven项目:new->project->Maven Project,artifact选择webapp: step2:填写项目的group ...

  8. SpringMVC整合Swagger2

    SpringMVC整合Swagger2 前言 POM引入 Swagger配置类 spring-mvc.xml设置 如果有在web.xml里配置拦截器 测试类 准备就绪 注意事项 爬坑经历 参考文章 前 ...

  9. SSM框架整合(Spring+SpringMVC+MyBatis)

    输出结果 1.Maven Web项目创建 之前有写过Eclipse+Maven创建web项目的帖子,如果需要,请参考这里写链接内容 创建好项目之后因为入下图: 2.SSM整合 2.1 引入需要的JAR ...

最新文章

  1. 基于STC8G1K17的信号转换方案
  2. python装饰器实例-python 装饰器(三):装饰器实例(一)
  3. php嵌套 frame,终极解决禁止网站被别人通过iframe引用嵌套套入。
  4. vivo分屏_vivo分屏+Jovi语音助手!让你找到解题新思路
  5. windowopen传值到jsp_window.open()使用方法以及传参数的问题总结
  6. 从全栈式解决方案到情感化,揭秘问众智能切入车载语音市场的最佳姿势...
  7. Codeforces Round #196 (Div. 1 + Div. 2)
  8. 直方图均衡图像对比度(histogram equalization)PYTHON+OPENCV2
  9. arm汇编指令集_汇编入门第一篇,小白也能看懂
  10. odps sql 日期函数处理
  11. S7-1500 SD卡格式化
  12. 直播电商源码,实现直播音视频的推流
  13. 【网络攻防课实验】一:本地系统密码破解
  14. Low-Code is Low—— 低代码的使用
  15. 石大远程在线考试计算机网络课程设计,20202021石大远程在线考试——《计算机网络课程设计》在线考试主观题参考资料答案.docx...
  16. AMT说产业互联网络
  17. 摄像头CMOS CCD
  18. 音频转换器怎么将ogg转换mp3格式
  19. 使用css3中的var()实现改变scss的变量值
  20. 2022-2027年中国金融服务业RFID行业发展前景及投资战略咨询报告

热门文章

  1. 【博客项目】—Joi(八)
  2. 写笔记插件_Java程序员笔记(知识)管理的一点经验
  3. CCF CSP202112-2 序列查询新解
  4. 汽车在怠速时有很轻微的间歇抖动,是不是节气门脏了?
  5. 人究竟能抠到什么程度?
  6. 想买楼下邻居的那套房,彼此熟悉,这种情况还用找中介付中介费吗?
  7. 不要总幻想大器晚成,努力赚钱要趁早
  8. 家里没有wifi6设备,换wifi6路由器会有提升吗?
  9. python入门——P43魔法方法:算数运算2
  10. SQL Server系统数据库–主数据库