springboot的自动配置原理/步骤

springboot的自动配置原理/步骤1、SpringBoot启动的时候加载主配置类(@SpringBootApplication),开启了自动配置功能@EnableAutoConfiguration。 2、@EnableAutoConfiguration作用:     利用AutoConfigurationImportSelector给容器中导入一些组件;可以查看selectImports()方法的内容; …

大家好,又见面了,我是你们的朋友全栈君。

1、SpringBoot启动的时候加载主配置类(@SpringBootApplication),开启了自动配置功能 @EnableAutoConfiguration。 

2、@EnableAutoConfiguration 作用: 

springboot的自动配置原理/步骤

        利用AutoConfigurationImportSelector给容器中导入一些组件;可以查看selectImports()方法的内容;
        将类路径下 META-INF/spring.factories 里面配置的所有AutoConfiguration的值加入到了容器中;

springboot的自动配置原理/步骤

         每一个这样的 xxxAutoConfiguration类都是容器中的一个组件,都加入到容器中;用他们来做自动配置;

3、每一个自动配置类进行自动配置功能;

4、以HttpEncodingAutoConfiguration(Http编码自动配置)为例解释自动配置原理;
       一但这个配置类生效,这个配置类就会给容器中添加各种组件,这些组件的属性是从对应的properties类中获取的,这些类里面的每一个属性又是和配置文件绑定的;

springboot的自动配置原理/步骤

 

      a、@Configuration //表示这是一个配置类,也可以给容器中添加组件
   b、@EnableConfigurationProperties//启动指定类的ConfigurationProperties功能;将配置文件中对应的值和HttpEncodingProperties绑定起来;并把HttpEncodingProperties加入到ioc容器中 。 

         所有在配置文件中能配置的属性都是在xxxxProperties类中封装着;该类中有什么属性,配置文件就可以配置什么;@ConfigurationProperties(prefix = “spring.http.encoding”) //从配置文件中获取指定的值和bean的属性进行绑定。

springboot的自动配置原理/步骤

       c、@ConditionalOnWebApplication //Spring底层@Conditional注解:根据不同的条件,如果满足指定的条件,整个配置类里面的配置就会生效; 判断当前应用是否是web应用,如果是,当前配置类生效
    d、@ConditionalOnClass(CharacterEncodingFilter.class) //判断当前项目有没有CharacterEncodingFilter这个类;CharacterEncodingFilter类是SpringMVC中进行乱码解决的过滤器;
       e、@ConditionalOnProperty(prefix = “spring.http.encoding”, value = “enabled”, matchIfMissing=true) //判断配置文件中是否存在 spring.http.encoding.enabled这个配置;如果不存在,判断也是成立的

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/151131.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • JAVA HD japan_E3X-HD光纤放大器_欧姆龙继电器_欧姆龙PLC_欧姆龙接近开关「建议收藏」

    JAVA HD japan_E3X-HD光纤放大器_欧姆龙继电器_欧姆龙PLC_欧姆龙接近开关「建议收藏」欧姆龙E3X-HD光纤放大器特点免维护免维护,长期稳定检测【智能功率控制】针对LED常年老化造成的投光量降低及脏污等导致的受光量降低现象,通过智能功率控制功能,自动感知并保持最佳检测状态。环境适应性强,免维护。想要检测各种颜色,大小的工件在所有检测场合中游刃有余搭载发光元件GIGARAYⅡE3X-HD特点6同级最高水准的GIGARAYII的压倒性大功率,黑橡胶等低反射率检测及大型被检测…

    2022年7月7日
    28
  • scp传输文件的命令

    scp传输文件的命令scp传输文件的命令

    2022年8月22日
    3
  • 磁盘管理器能看到u盘,但电脑里没有_bt3安装到u盘启动不了

    磁盘管理器能看到u盘,但电脑里没有_bt3安装到u盘启动不了最近在弄bt3U盘版的时候,依照网上的方法弄了半天都有问题,一直都进不去xwindow,由于spoonwep工具是有界面的,故只在命令行下如果没有界面的支持,是不能办事的,后来在网上看到很多兄弟们说显卡的问题,结果在无线网论坛里找到了ATI卡的驱动,具体下载的地址是:http://www.wlanbbs.com/thread-5439-1-1.html  非常感谢这位提供驱动的兄弟,ATI在哪

    2022年10月1日
    0
  • 指令字长,机器字长,存储字长的关系_指令字长的概念

    指令字长,机器字长,存储字长的关系_指令字长的概念指令字长、存储字长、机器字长、时钟周期、机器周期、指令周期、取址周期、存取周期的关系考研做题途中遇到这些问题,发现自己掌握的很模糊,遂写下此篇,加深记忆。1、机器字长、存储字长、指令字长机器字长:CPU一次能够处理的数据的位数。通常等于寄存器的位数。例子:windows64位/32位,这里的64位和32位指的就是该操作系统的机器字长。存储字长:计算机存储器中一个存储单元可以存储的位数。例子:某某计算机按照字节编址,即说明该计算机的存储字长为1B=8位。指令字长:计算机内一条指令的位数。这里通常指

    2022年8月31日
    0
  • ViewStub的使用

    ViewStub的使用ViewStub经常用在ListView中,用来隐藏一些操作,使用起来也很简单,主要就是在ListView的Item中通过一个ViewStub来引用被隐藏的布局文件。监听用户点击Item,判断下当前是可见还是不可见,实时进行状态的转换即可。效果图如下:   下面看代码:MainActivity.java:设置数据源 publicclassMainActiv…

    2022年6月28日
    41
  • Ubuntu下安装cuda_Ubuntu下KDE的安装删除

    Ubuntu下安装cuda_Ubuntu下KDE的安装删除Ubuntu下安装CUDA、cuDNN;多版本安装

    2022年9月23日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号