SpringBoot_自动配置
- 一、SpringBoot 的核心注解:
- @SpringBootApplication
- 使用main()方法启动的类,只有该注解。进入该注解如图:
- @SpringBootConfiguration:底层是@Configuration;
- 使用main()方法启动的类,只有该注解。进入该注解如图:
- 1、@Configuration
- 该注解用于JavaConfig中,被该注解标注的表示,该类是个配置类
- 2、@ComponentScan
- 自动扫描注解,扫描路径下的组件或者Bean;@Controller/@Service/@Component/@Repository
- 3、@EnableAutoConfiguration
- 复合注解:自动载入应用程序所需要的所有默认配置。
- 最关键的注解@Import({EnableAUtoConfigurationImportSelector.class}), 该注解的作用是帮助SpringBoot 应用将所有符合条件的@Configuration 配置都加载到当前SpringBoot 应用中
- 实际上是扫描所有jar路径下的META-INF/spring.factories,将其文件包装成Properties对象,获取key值为EnableAutoConfiguration的数据,然后添加到容器里。
- @AutoConfigurationPackage,详情如图
- Registrar 是 AutoConfigurationPackages 的内部类,方法 registerBeanDefinitions(),在默认的情况下就是将:主配置类(@SpringBootApplication)的所在包及其子包里边的组件扫描到Spring容器中。比如: Lambda 表达式中的@Data注解,都是由@AutoConfigurationPackage 注解扫描加载。
- @SpringBootApplication
- 二、SpringBoot 自动配置的流程:
- 概括:
- 通过 @EnableAutoConfiguration注解,从classpath 下搜索所有的META-INF/spring.factories 配置文件,并将EnableAutoConfiguration 对应的配置项通过反射实例化为对应标注了@Configuration的Ioc容器配置类,然后汇总为一个并加载到Ioc容器中。
- 详解:
- 以 @SpringBootApplication 注解为核心,进入后依赖 @EnableAutoConfiguration注解,进入后依赖@Import注解,根据引入的类EnableAutoConfigurationImportSelector的父类 AutoConfigurationImportSelector,引入SpringFactoriesLoader类,加载所有的META-INF/spring.factories 配置文件。将EnableAutoConfiguration 对应的配置项通过反射实例化为对应标注了@Configuration的Ioc容器配置类,然后汇总为一个并加载到Ioc容器中。
- 概括:
- 三、从源码分析SpringBoot 自动配置的过程:
- 1、创建SpringApplication 对象,如图
- 2、进入SpringApplication 的带参构造方法,如图
- 3、初始化方法,initialize(),如图
- 4、通过getSpringFactoriesInstances()方法,实例化ApplicationContextInitializer、ApplicationListener,方法内部,如图
- 5、loadFactoryNames()方法,如图
- 6、在Spring-boot 和Spring-boot-autoconfig 的META-INF/spring.factories ,如图
- 1、创建SpringApplication 对象,如图
- 四、实例
- 比如Redis 的自动配置,使用如下:
- 1、在pom文件中引入依赖;
- 2、在application.yml 或者 application.properties 引入如下配置:
- 3、 如此即可在项目中使用redis,集成非常简单。
- 原理:
- 自动配置扫描了spring.factories ,找到如下所示:
- @ConditionalOnClass注解: 如果classpath,依赖中含有JedisConnection, RedisOperations,Jedis 这三个类,则添加redis的自动配置。
- 自动配置扫描了spring.factories ,找到如下所示:
- 总结:
- 根据jar包依赖,添加自动配置。
- 比如Redis 的自动配置,使用如下:
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
02月21日云栖号头条:阿里倡导共建问题商家“黑名单”
云栖号:https://yqh.aliyun.com第一手的上云资讯,不同行业精选的上云企业案例库,基于众多成功案例萃取而成的最佳实践,助力您上云决策! 今日最新云头条快讯: 2月20日,北京市市场监督管理局对外公布 “涉疫跨平台联防联控”工作机制,因销售假口罩等严重违法行为被一家电商平台清退的商户,也将被其他电商平台清退;盒马方面介绍称,盒马全国主要城市的线上服务能力,已恢复至节前峰值水平。武汉线上服务能力恢复到平日的80%以上。 一起来看最新的资讯: 阿里倡导共建问题商家“黑名单” 监管部门组织清退26家跨平台不法商户 2月20日,北京市市场监督管理局对外公布 “涉疫跨平台联防联控”工作机制,因销售假口罩等严重违法行为被一家电商平台清退的商户,也将被其他电商平台清退。这项由阿里巴巴率先提出的共建问题商家“黑名单”倡议,不仅得到监管部门有力的响应,也在疫情期间快速转化为工作机制落地。2月4日,阿里巴巴对外公示永久清退15家涉嫌销售问题口罩店铺,并在行业内率先呼吁所有电商平台一起携手将问题商家拉入“黑名单”,以断绝他们跨平台继续作恶的机会。 高德地图:武汉市已有超过1000家商超企业入...
- 下一篇
Kubernetes可观察性:全方位事件监控
随着微服务、云原生的逐渐普及,越来越多的公司开始基于Kubernetes实现业务架构转型,Kubernetes也成为近两年IT领域最火热的关键词之一。 Kubernetes是一套非常完善、复杂的管理系统,作为所有业务的基础设施,每个工程师都会在平台上测试、部署、上线应用,所有这些过程都需要我们对业务、系统运行的状态进行实时的掌握和监控。因此可观察性是用好Kubernetes的关键一环。 Kubernetes Events 为了让用户对Kubernetes的内部状态有更好的了解,Kubernetes引入了事件(Events)系统,在Kubernetes的资源产生变化的时候,会以事件的形式记录在APIServer中,并可以通过API或者 kubectl 命令去查看,例如: $ kubectl describe pod productpage-v1-7658b8dcc6-jvswr ........... ........... Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Schedule...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- MySQL8.0.19开启GTID主从同步CentOS8
- 设置Eclipse缩进为4个空格,增强代码规范
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Hadoop3单机部署,实现最简伪集群
- CentOS8安装Docker,最新的服务器搭配容器使用
- Docker快速安装Oracle11G,搭建oracle11g学习环境