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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • .NET程序的编译和运行

    程序的编译和运行,总得来说大体是:首先写好的程序是源代码,然后编译器编译为本地机器语言,最后在本地操作系统运行。下图为传统代码编译运行过程:.NET的编译和运行过程与之类似,首先编写好的源代码,然

    2021年12月22日
    52
  • mysql怎么创建,删除,查看索引?

    mysql怎么创建,删除,查看索引?

    2021年10月18日
    39
  • SpringBoot——spring-data-jpa之分页查询

    SpringBoot——spring-data-jpa之分页查询SpringBoot——spring-data-jpa之分页查询

    2022年4月23日
    85
  • linux+shell脚本100,shell脚本(shell编程100例)

    linux+shell脚本100,shell脚本(shell编程100例)ShellScript,Shell脚本与Windows/Dos下的批处理类似,也便是用各类指令预先放入到一个文件中,便利一次性执行的一个程序文件,主要是便利办理员进行设置或许办理用的。可是它比Windows下的批处理更强大,比用其他编程程序修改的程序功率更高,它使用了Linux/Unix下的指令。shell编程100例1、编写helloworld脚本#!/bin/bash#编写helloworld…

    2022年10月3日
    0
  • 关于HashMap扩容机制

    关于HashMap扩容机制HashMap的底层有数组+链表(红黑树)组成,数组的大小可以在构造方法时设置,默认大小为16,数组中每一个元素就是一个链表,jdk7之前链表中的元素采用头插法插入元素,jdk8之后采用尾插法插入元素,由于插入的元素越来越多,查找效率就变低了,所以满足某种条件时,链表会转换成红黑树。随着元素的增加,HashMap的数组会频繁扩容,如果构造时不赋予加载因子默认值,那么负载因子默认值为0.75,数组扩容的情况如下:1:当添加某个元素后,数组的总的添加元素数大于了数组长度*0.75(默认,也可自己设

    2022年6月25日
    29
  • 修改 nginx 的默认端口「建议收藏」

    修改 nginx 的默认端口「建议收藏」nginx安装的时候有一个坑,需要注意,那就是默认端口号配置的是80.大家知道iis里面的服务默认也是80.如果是在windows服务里面安装的话,之前已经有iis。那么你就会报错。报端口号被占用。具体英文忘记了怎么写。这个时候,2种方法,一修改nginx的配置文件,不让他用80端口号。这是最好的方法。修改文件:找到nginx压缩文件:nginx不需要做任何的安装,在他的官网上下载后,直接解压后出现如下图就ok。我的另外一篇文章有具体操作,可以去看。打开conf,找到ngin..

    2022年9月8日
    0

发表回复

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

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