Spring Boot源码解析(观感)

1-2-3.微服务与Spring Boot源码解析(观感)

2020年2月27日
14:45

来自颜群老师的Spring课程

@SpringBootApplication

@SpringBootApplication是spring boot的主配置类,之所以spring boot有 这么强大的功能,归功于它
该注解包含:

@SpringBootConfiguration

@SpringBootConfiguration其中又包含 @Configuration,代表了配置类;
该类是一个配置类;
加了@Configuration 注解的类,会自动纳入Spring 容器

@EnableAutoConfiguration (可以自动配置)

使spring boot 可以自动配置。 -> 原则:约定优于配置

源码分析

@EnableAutoConfiguration ->
@AutoConfigurationPackage ->
@Import(AutoConfigurationPackages.Registrar.class) ->
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WLQeCVbO-1652269445424)(:/b27388daf01e4dca848403dc2b865671)]

这里的 metadata(元数据)指的是:主配置类 的包名 + 类名, getPackageName() 是获取包的名字
例如:org.yq.HelloWorld.HelloWorldApplication = 包名(org.yq.HelloWorld) + 类名(HelloWorldApplication)

结论

@EnableAutoConfiguration 可以使spring boot自动配置。可以找到主配置类 @SpringBootApplication 所在类的包,就会将该包 及所有的子包全部纳入 spring 容器

主配置类

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JRcXksn5-1652269445423)(:/ea034d83e5d04dc6bcb30c01d67e3809)]

主配置类 所在包的子包:
在这里插入图片描述

源码分析

@EnableAutoConfiguration -> @Import(AutoConfigurationImportSelector.class)

这个 AutoConfigurationImportSelector 的作用是:将第三方的依赖(jar、配置) 引入到 spring 容器中
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sKoops0z-1652269445425)(:/e3cb41a5e0e64f48be101cc468f44e8f)]

通过该方法将 第三方的依赖 引入到 spring 容器中

  1. @EnableAutoConfiguration ->
  2. @Import(AutoConfigurationImportSelector.class) ->
  3. getCandidateConfigurations() ->
  4. loadFactoryNames() ->
  5. loadSpringFactories() ->
  6. FACTORIES_RESOURCE_LOCATION=“META-INF/spring.factories”

FACTORIES_RESOURCE_LOCATION=“META-INF/spring.factories” :spring boot 在启动时,会根据 META_INF/spring.factories 找到相应的三方以来,并将这些依赖引入本项目

总结

  1. 编写项目时,一般会将自己写的代码 以及三方依赖进行配置。但是spring boot 会自动配置
  2. 自己的代码: spring boot 通过 @SpringBootConfiguration 自动帮我们配置
  3. 三方依赖: 通过 spring-boot-autoconfigure-2.x.x.RELEASE.jar 中的 META-INF/spring.factories 进行声明,最后通过 @EnableAutoConfiguration 开启使用
  4. spring-boot-autoconfigure-2.x.x.RELEASE.jar包中 包含了 J2EE 整合体系中需要的依赖。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

加把劲骑士RideOn

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值