zoukankan      html  css  js  c++  java
  • SpringBoot_配置-自动配置原理(超重点)

    平时我们在properties或yml配置文件能写已有的配置(比如server.port)是有依据的,能配置的属性来源自xxxProperties文件中;下面开始讲解整个过程:

      1.我们书写一个主配置类,加了springbootApplication注解,有了该注解,我们就可以启动springboot项目以及加载很多的自动配置类

      2.我们点进springbootapplicaiton注解可以看到,如下:

       3.我们重点关注@EnableAutoConfiguration,点进去如下:

     

       4.我们具体导了哪些组件就是看这个选择器类,点进这个类并查看它的父类,父类中有一个方法selectImports()就是来获取需要加载哪些自动配置类,如图:

       5.我们点进getCandidateConfiguration()里面,如下:

       6.我们在点进loadFactoryNames()里,查看它的实现细节:

     

       7.这里的factoryClassName就是我们的EnableAutoConfiguration,根据这个类找到要加载的自动配置类,并把他们添加到容器中:

       8.所以每一个xxxAutoConfiguration的类都是容器的组件,用他们来做自动配置,没错,这些配置类又得加入他们各自的组件,以为例子,进入到这个类:

     

       上面这个方法是HttpEncodingAutoConfiguration的一个方法,会向容器导入一个组件,这个组件的属性正是从当前自动配置类的HttpEncodingProperties属性中获取的,也就意味着本自动配置类要加载的组件很大部分属性都是要依赖xxxxProperties对象中的属性,xxxxProperties类中的属性可以理解成很多其他组件属性的集合

     

     

       9.总结:

  • 相关阅读:
    常用模块(time,os,sys,collections,random,序列化模块,re)
    python-函数篇
    内置函数——filter和map
    python杂七杂八的用法
    计算机硬件
    操作系统简介
    Django入门
    linux下查看cpu物理个数和逻辑个数
    python反射的妙用
    Python(文件、文件夹压缩处理模块,shelve持久化模块,xml处理模块、ConfigParser文档配置模块、hashlib加密模块,subprocess系统交互模块 log模块)
  • 原文地址:https://www.cnblogs.com/ibcdwx/p/13624103.html
Copyright © 2011-2022 走看看