BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #64156同步于 2020/7/23
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

【文末有惊喜!】Spring Boot核心原理实现及核心注解类

Crystal7
2020/7/23镜像同步0 回复
Spring Boot最核心的功能就是“自动配置”,这一切都基于“约定优于配置”的原则。那么Spring Boot是如何约定,又是如何实现自动配置功能的呢?下面带大家来通过源码学习Spring Boot的核心运作原理以及最核心的注解@EnableAutoConfiguration来进行讲解。 1.1 核心运行原理 使用Spring Boot时我们只需引入对应的Starters,Spring Boot启动时便自会动加载相关依赖,配置相应的初始化参数,以最快捷、简单的形式对第三方软件进行集成,这便是Spring Boot的自动配置功能。先从整体上看一下Spring Boot实现该运作机制涉及到的核心部分,如下图。 图片 图中描述了Spring Boot自动配置运作过程中涉及的几个核心功能及其相互之间的关系。它们包括:@EnableAutoConfiguration、spring.factories、各组件对应的AutoConfiguration类、@Conditional注解以及各种Starters。 如果用一句话来描述整个过程就是:Spring Boot通过@EnableAutoConfiguration注解开启自动配置,加载spring.factories中注册的各种AutoConfiguration类,当某个AutoConfiguration类满足其注解@Conditional指定的生效条件(Starters提供的依赖、配置或Spring容器中是否存在某个Bean等)时,那么实例化该AutoConfiguration类中定义的Bean(组件等),并注入Spring容器,至此就完成了依赖框架的自动配置。 先从概念及功能上了解一下上图所属部分的作用及相互关系,后面章节会针对每个功能及组件进行源代码级别的讲解。 l @EnableAutoConfiguration:该注解由组合注解@SpringBootApplication引入,完成自动配置开启,扫描各个jar包下的spring.factories文件,并加载其中注册的AutoConfiguration类等。 l spring.factories:配置文件,位于jar包的META-INF目录下,按照指定格式注册了自动配置的AutoConfiguration类,也可以包含其他类型待注册的类。该配置文件不仅存在于Spring Boot项目中,也可以存在于自定义的自动配置(或Starter)项目中。 l AutoConfiguration类:自动配置类,代表了Spring Boot中一类以XXAutoConfiguration命名的自动配置类。其中定义了三方组件集成Spring所需初始化的Bean和条件。 l @Conditional:条件注解及其衍生注解,使用在AutoConfiguration类上,当满足该条件注解时才会实例化AutoConfiguration类。 l Starters:三方组件的依赖及配置,Spring Boot已经预置的组件。Spring Boot默认的Starters项目往往是只包含了一个pom依赖的项目。如果自定义的starter,该项目还需包含spring.factories文件、AutoConfiguration类和其他配置类。 以上在概念层面了解了Spring Boot自动配置的整体流程和基本运作原理,下面重点看一下@EnableAutoConfiguration注解的功能。 1.2运作原理源码解析之@EnableAutoConfiguration @EnableAutoConfiguration是开启自动配置的注解,在创建的Spring Boot项目中并不能直接看到此注解,它是由组合注解@SpringBootApplication引入。下面,我们首先了解一下入口类和@SpringBootApplication注解,然后再深入了解@EnableAutoConfiguration注解的构成与作用。 文章后续内容及图书《Spring Boot技术内幕——架构设计与实现原理》惊喜详情请关注 搜狐技术产品公众号 注:公众号二维码 公众号ID:sohu-tech
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。