SpringBoot篇——SpringBoot自动装配原理、@SpringBootApplication与application.yaml配置文件关系以及主启动类如何运行?一篇文章速通!

了解pom.xml配置文件中的自动装配其他依赖

一、了解SpringBoot的核心依赖都在他的父工程中
<!--   我们创建一个SpringBoot项目时,都会存在一个远端的父项目-->
   

 <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.5</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

我们导入各种依赖的时候,不需要写版本,是因为在父项目中有一个巨大的仓库,直接调用即可

二、启动器

<!--启动器-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

pom.xml配置文件中的dependencies中都是配置的各种启动器
1、启动器:即SpringBoot的启动场景,比如配置spring-boot-starter-web,他就会帮我们自动导入web环境所有的依赖

2、重点:SpringBoot会将所有的功能场景,都变成一个个的启动器!!!
去哪能找到这些启动器呢?
(1)在官网上进入SpringBoot,选择learn找打对应的版本,点击reference doc

(2)选择useing Spring Boot

(3)进去之后选择start,内含全部的启动器

三、打包插件

 <build>
        <plugins>
<!--            SpringBoot打包插件,负责将项目打包成jar包,对应Maven侧边栏package功能-->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.7.5</version>
            </plugin>
        </plugins>
    </build>

主启动程序剖析注解@SpringBootApplication与application.yaml配置文件关系

一、代码

@SpringBootApplication//@SpringBootApplication注解标注这个类是SpringBoot的一个应用
public class Springboot01HelloworldApplication {

    public static void main(String[] args) {
        //将SpringBoot应用启动
        SpringApplication.run(Springboot01HelloworldApplication.class, args);
    }
}

二、剖析@SpringBootApplication
1、点进去这个注解里面有两个注解需要研究

2、对@SpringBootConfiguration理解
SpringBoot的配置注解

点进@Configuration,发现,他还是一个spring的组件

三、对@EnableAutoConfiguration理解
1、是自动导入配置的注解

2、点进去:

四、了解自动配置的核心文件spring.factories


五、阶段总结
SpringBoot所有的自动配置,都是在启动的时候扫描并加载,所有的自动配置类都在spring.factories类中,但是不一定会生效,要通过注解@ConditionalOnXXX判断条件是否成立,只要导入了对应的starter启动器,自动装配就会生效,即配置成功。详细注解剖析@SpringBootApplication,见附件原理图

六、对spring.factories文件中的自动配置类的理解,厘清自动装配的属性和application.yaml配置文件的关系
1、以HttpEncodingAutoConfiguration自动配置类为例,所有的自动配置类都是一个被@Configuration注解标记的配置类(结合Spring中的:“使用Config类配置”理解),从spring.factories中进入这个类中,分析他的注解

2、点进这个HttpProperties类,这个类配置的所有属性,就是对应我们在application.yaml配置文件中spring.http带出来的配置

3、@ConditionalOn...判断条件注解扩展

4、总结(厘清自动装配的属性和application.yaml配置文件的关系)
在spring.factories这个文件中存在大量的XXXAutoConfiguration自动装配的类,每一个这样的XXXAutoConfiguration类都是容器中的一个组件,最后都加入到容器中,用他们来做自动配置。这个类中所有的属性是由XXXProperties配置类来负责,而这个XXXProperties配置类总会通过@ConfigurationProperties注解和一个配置文件进行绑定,来设置某些属性的默认值,我们恰恰可以找到XXXProperties配置类和绑定的配置文件的对应关系,来自定义属性或者配置!

5、拓展:通过配置查看自动配置类是否有效(我们首先得明确,只有我们导入了对应的依赖启动器(jar包),自动配置类才会生效!)
(1)在application.yaml配置文件中配置如下代码

debug: true

(2)启动主程序服务,查看控制台打印结果
①有效状态的自动配置类

②无效状态的自动配置类

主启动类如何运行?

主启动类中的run方法,源码研究不值当,直接研究它的功能:

1、推断当前的应用类型是普通的项目还是Web项目(因为如果是Web项目,服务器可以一直启动)
2、查找并加载所有可用初始化器,设置到initializers属性中
3、找出所有的应用程序监听器,设置到listeners属性中
4、推断并设置main方法的定义类,找到运行的主类

SpringBoot的核心自动装配原理,值得你花很长的时间去研究,设计相当巧妙!弄清自动装配的原理,那么你就对SpringBoot已经掌握了很大的一部分了,真心希望各位能够好好去研究下,绝对受益很大,祝各位早日成为全栈工程师!

  • 18
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Be explorer

若认可笔者文章,手头富裕望支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值