侧边栏壁纸
博主头像
soulballad博主等级

技术文章记录及总结

  • 累计撰写 169 篇文章
  • 累计创建 26 个标签
  • 累计收到 4 条评论

目 录CONTENT

文章目录

【源码分析-Spring Boot】-16.Spring Boot Starter 加载和解析

soulballad
2020-08-02 / 0 评论 / 0 点赞 / 43 阅读 / 729 字
温馨提示:
本文最后更新于 2022-03-03,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

Spring Boot Starter:【从零开始学Spring Boot】-17.Spring Boot Starter自定义

1.自定义 starter 原理分析

demo-spring-boot-starter 中 Hello 接口定义了 hello 方法,它又三个实现类,分别是:HelloGirl、HelloJava、HelloWorld。

它们三个都是在 HelloAutoConfiguration 中进行的声明,声明时通过条件注解 @ConditionalOnProperty 来区分具体要激活的 bean,而条件注解的值通过外部配置传入,所以就将选择权交给了使用者;同时这里还声明了 HelloTemplate,HelloTemplate 需要用到的属性值通过 HelloProperties 从外部配置文件中传入。

HelloAutoConfiguration 配置在 META-INF\spring.factories 中,spring boot 会通过 SpringFactoriesLoader 来自动加载该位置的类,这是一种 SPI 机制,所以依赖了 demo-spring-boot-starter 的项目,会自动加载 HelloAutoConfiguration 这个装配类。

test-spring-boot-starter 中的 application.properties 中配置了 com.soulballad.hello.java.enable=true 配置,所以会自动激活 HelloJava 的 bean;同时配置的HelloProperties 中其他属性也会一并被加载到上下文中。

所以在 HelloController 中调用 helloTemplate 的 hello 方式时,最终会调用到 HelloJava 类。

0

评论区