spring boot深入及启动原理探究

本文深入探讨了Spring Boot的核心特性,包括自动配置、起步依赖、Actuator和命令行界面。自动配置通过@SpringBootApplication和@EnableAutoConfiguration注解实现,加载配置类到Spring容器。Actuator提供了应用监控功能。此外,详细解释了配置文件如何影响Bean设置,如server.port、数据库连接等。Spring Boot通过各starter模块的spring.factories文件实现组件自动配置。最后,概述了Spring Boot启动过程,涉及监听器、环境配置和应用上下文的创建。

围绕spring boot 的优点,本文我们来探究一下spring boot具体是如何实现这些特性的。在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入有防盗链机制,建议将图片保存下来直接上传(img-(![https://i-blog.csdnimg.cn/blog_migrate/9510af7d4c6852c602584931fe89cd6d.png#pic_center)]
在这里插入图片描述
在这里插入图片描述

  • 自动配置:针对很多Spring应用程序和常见的应用功能,Spring boot能自动提供相关配置;
  • 起步依赖:告诉Spring boot需要什么功能,它就能引入需要的依赖库;
  • Actuator:让你能够深入运行中的Spring Boot应用程序,一探Spring boot程序的内部信息;
  • 命令行界面:这是Spring Boot的可选特性,主要针对Groovy语言使用。

在这里插入图片描述

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = {
@Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
@Filter(type = FilterType.CUSTOM, classes =
AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {
/**
* Exclude specific auto-configuration classes such that they will never be
applied.
* @return the classes to exclude
*/
@AliasFor(annotation = EnableAutoConfiguration.class)
... ... ...
@SpringBootApplication是一个复合注解,其中关键@EnableAutoConfiguration,就是开启自动配置的意思
@SpringBootApplication包括三个注解,功能如下:@EnableAutoConfiguration:SpringBoot根据应用所声明的依赖来对Spring框架进行自动配置
@SpringBootConfiguration(内部为@Configuration):被标注的类等于在spring的XML配置文件中(applicationContext.xml),装配所有bean事务,提供了一个spring的上下文环境
@ComponentScan:组件扫描,可自动发现和装配Bean,默认扫描SpringApplication的run方法里的Booter.class所在的包路径下文件,所以最好将该启动类放到根包路径下.

在这里插入图片描述

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@AutoConfigurationPackage
@Import({AutoConfigurationImportSelector.class})
public @interface EnableAutoConfiguration {
    String ENABLED_OVERRIDE_PROPERTY = "spring.boot.enableautoconfiguration";

    Class<?>[] exclude() default {};

@Import导入的AutoConfigurationImportSelector的selectImports()方法通过SpringFactoriesLoader.loadFactoryNames()扫描所有具有META-INF/spring.factories的jar包。spring-boot-autoconfigure-x.x.x.x.jar里就有一个这样的spring.factories文件。

在这里插入图片描述在这里插入图片描述
@EnableAutoConfiguration注解通过@SpringBootApplication被间接的标记在了Spring Boot的启动类上。在SpringApplication.run(…)的内部就会执行selectImports()方法,找到所有JavaConfig自动配置类的全限定名对应的class,然后将所有自动配置类加载到Spring容器中。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
@EnableConfigurationProperties(ServerProperties.class) 代表加载ServerProperties服务器配置属性类
prefix = “server” 表示SpringBoot配置文件中的前缀,@ConfigurationProperties会将配置文件中以server开始的属性映射到该类

在这里插入图片描述
Spring Boot自动化配置的Bean提供了300多个属性,用于调整设置,只要在环境变量、Java系统属性、JNDI、命令行或者属性文件里面进行指定就可以了。

server.port 服务器的HTTP端口
spring.datasource.url 数据库驱动路径
spring.datasource.username 用户名
spring.datasource.password 密码

在这里插入图片描述
mybatis-spring-boot-starter、spring-boot-starter-web等组件的META-INF文件下均含有spring.factories文件,自动配置模块中,SpringFactoriesLoader收集到文件中的类全名并返回一个类全名的数组,返回的类全名通过反射被实例化,就形成了具体的工厂实例,工厂实例来生成组件具体需要的bean。

在这里插入图片描述
spring-boot-starter-parent -> spring-boot-starter-dependencies
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Actuator是Springboot提供的用来对应用系统进行自省和监控的功能模块,借助于Actuator开发者可以很方便地对应用系统某些监控指标进行查看、统计等。
命令行模式:安装Spring Boot CLI工具包
在这里插入图片描述
在这里插入图片描述
原图:https://www.processon.com/view/link/59812124e4b0de2518b32b6e

流程:配置环境(environment)、事件监听(listeners)、应用上下文(applicationContext),并基于以上条件,在容器中开始实例化我们需要的Bean
https://www.cnblogs.com/trgl/p/7353782.html
1.创建了应用的监听器SpringApplicationRunListeners并开始监听
2.加载SpringBoot配置环境(ConfigurableEnvironment)
3.配置环境(Environment)加入到监听器对象中(SpringApplicationRunListeners)
4.创建run方法的返回对象:ConfigurableApplicationContext(应用配置上下文)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值