一、定制化的常见方式

  1. 修改配置文件
  2. xxxxxCustomizer
  3. 编写自定义的配置类 xxxConfiguration;+ @Bean替换、增加容器中默认组件;视图解析器
  4. Web应用 编写一个配置类实现 WebMvcConfigurer 即可定制化web功能;+ @Bean给容器中再扩展一些组件
@Configuration
public class AdminWebConfig implements WebMvcConfigurer
  1. @EnableWebMvc + WebMvcConfigurer —— @Bean 可以全面接管SpringMVC,所有规则全部自己重新配置; 实现定制和扩展功能
  • 原理
  1. WebMvcAutoConfiguration 默认的SpringMVC的自动配置功能类。静态资源、欢迎页… •
  2. 一旦使用 @EnableWebMvc 、。会 @Import(DelegatingWebMvcConfiguration.class)
  3. DelegatingWebMvcConfiguration 的 作用,只保证SpringMVC最基本的使用
    • 把所有系统中的WebMvcConfigurer 拿过来。所有功能的定制都是这些 WebMvcConfigurer 合起来一起生效
    •自动配置了一些非常底层的组件。RequestMappingHandlerMapping、这些组件依赖的组件都是从容器中获取
    • public class DelegatingWebMvcConfiguration extends WebMvcConfigurationSupport
  4. WebMvcAutoConfiguration 里面的配置要能生效必须
    @ConditionalOnMissingBean(WebMvcConfigurationSupport.class)
  5. @EnableWebMvc 导致了 WebMvcAutoConfiguration 没有生效。

二、原理分析套路

场景starter - xxxxAutoConfiguration - 导入xxx组件 - 绑定xxxProperties -- 绑定配置文件项

参考视频

SpringBoot 定制化原理相关推荐

  1. SpringBoot定制化开发

    文章目录 SpringBoot定制化开发 SpringBoot定制化开发 原理分析套路: 先找他对应的场景,然后我们就可以定位到对应的xxxxAutoConfiguration看他内部导入了哪些组件, ...

  2. [SpringBoot2]定制化原理_SpringBoot定制化组件的几种方式

    定制化原理 定制化的常见方式 ● 修改配置文件: ● xxxxxCustomizer: ● 编写自定义的配置类 xxxConfiguration:+ @Bean替换.增加容器中默认组件:视图解析器 ● ...

  3. SpringBoot--->>>web-->>定制化原理

    原理分析 在SpringBoot中,通过之前的web开发原理的探究,会发现,SpringBoot底层总能自己根据场景跑起来.流程是:导入场景 -> 对应的AutoConfiguration就会启 ...

  4. SpringBoot : 定制化Bean的利器:BeanPostProcessor BeanFactoryPostProcessor

    1.美图 2.概述 Spring的面试中,一般都会问到IOC和AOP,大部分同学都能回答出这些知识点的基本运用,如果再多问一句,AOP的底层实现方式,大部分人都会回答动态代理.那么动态代理是如何被使用 ...

  5. springboot的定制化方式

    springboot的定制化原理 个人理解,springboot设计目标就是希望利用提供各种默认约定配置,代替配置,从而达到简略配置的目的. 实现原理就是利用类似SPI机制,通过AutoConfigu ...

  6. SpringBoot使用assembly进行项目定制化打包

    SpringBoot使用assembly进行项目定制化打包 一.项目配置 1.添加插件 (1)编辑项目的 pom.xml 文件,加入 assembly 打包插件: <build><p ...

  7. 基于 RocketMQ Prometheus Exporter 打造定制化 DevOps 平台

    作者 | 陈厚道  冯庆 来源 | 阿里巴巴云原生公众号 导读:本文将对 RocketMQ-Exporter 的设计实现做一个简单的介绍,读者可通过本文了解到 RocketMQ-Exporter 的实 ...

  8. springboot应用启动原理(一) 将启动脚本嵌入jar

    Spring Boot Takes an opinionated view of building production-ready Spring applications. Spring Boot ...

  9. 这样讲 SpringBoot 自动配置原理,你应该能明白了吧

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:你在我家门口 juejin.im/post/5ce5effb ...

最新文章

  1. Product Backlog:终极任务清单
  2. 对操作系统安全构成威胁的问题
  3. 如果你是PM,想转PM,拿走
  4. 原本要与Hinton当同事,最后被迫Bengio门下读博? | 独立研究员的坎坷之路
  5. ASP.NET中删除文件夹下的文件
  6. logo qt添加_linux下如何给qt程序添加图标?
  7. mysql游标结果为空
  8. python-mysql 基础知识记录
  9. OpenGL研究3.0 多边形区域填充
  10. C/C++ OpenCV设置感兴趣区域ROI
  11. Entity Framework -- 使用类别字段的实体继承关系
  12. UnicodeEncodeError: #39;ascii#39; codec can#39;t encode character u#39;\u5929#39; in position 2...
  13. 计算机作文素材,学电脑作文素材
  14. 【Django】uWSGI和Gunicorn【转】
  15. 只能存储12KB数据,“码农女神”是怎样把人类送上月球的?
  16. 6. 大尾数法或小尾数法
  17. Mysql utf8mb3 utf8mb4 与UTF8 字符集参数(character_set_system)的说明
  18. 听说RSI准的难以置信?
  19. Python实现 文本词频统计(嵩天老师)
  20. ISO13335标准简介

热门文章

  1. MIPI related
  2. 180904 再卖菜 ccf
  3. 今天仔细学习了html加载执行的顺序
  4. cogs 1456. [UVa 10881,Piotr's Ants]蚂蚁
  5. discuz数据库相关表
  6. php魔术方法__SET __GET
  7. Ajax调试servlet连接失败
  8. IIS下的FTP使用
  9. [Bug] .NET 2.0 的Bug —— ComboBox中不能添加Component.
  10. C++找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小(也可能没有鞍点)