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


相关推荐

  • jlink烧录教程_自制flash烧录器

    jlink烧录教程_自制flash烧录器本文主要向大家介绍了Flash基础入门之J-Link固件烧录以及使用J-Flash向arm硬件板下载固件程序,通过具体的内容向大家展现,希望对大家学习Flash基础入门有所帮助。一、始于安装新版的MDK5.11a后,J-Link不能使用,提示安装新固件云云用新版本的STM32集成开发环境MDK5.11a(之前用的4.13a)链接J-Link下载程序,如果J-Link固件版本过低则点击J-Link设…

    2022年9月14日
    4
  • PostgreSQL 10.1 手册_部分 III. 服务器管理_第 20 章 客户端认证

    PostgreSQL 10.1 手册_部分 III. 服务器管理_第 20 章 客户端认证

    2021年6月14日
    84
  • 简单区分单射、满射与双射

    简单区分单射、满射与双射我的机器学习教程「美团」算法工程师带你入门机器学习已经开始更新了,欢迎大家订阅~任何关于算法、编程、AI行业知识或博客内容的问题,可以随时扫码关注公众号「图灵的猫」,加入”学习小组“,沙雕博主在线答疑~此外,公众号内还有更多AI、算法、编程和大数据知识分享,以及免费的SSR节点和学习资料。其他平台(知乎/B站)也是同名「图灵的猫」,不要迷路哦~利用泛…

    2022年6月10日
    114
  • 虚拟化之vmware-网络

    虚拟化之vmware-网络

    2021年8月29日
    96
  • Android toArray

    Android toArrayArrayList提供了一个将List转为数组的一个非常方便的方法toArray。toArray有两个重载的方法:1.list.toArray();2.list.toArray(T[]a);对于第一个重载方法,是将list直接转为Object[]数组;第二种方法是将list转化为你所需要类型的数组,当然我们用的时候会转化为与list内容相同的类型。不明真像的同学喜欢用第

    2022年5月15日
    31
  • docker基本操作命令_docker里面运行docker

    docker基本操作命令_docker里面运行docker一、Docker安装1、卸载Dockersudoyumremovedocker\docker-client\docker-client-latest\docker-common\docker-latest\docker-latest-logrotate\

    2022年9月18日
    3

发表回复

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

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