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


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 类。


文章作者: Soulballad
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Soulballad !
评论
 上一篇
【Spring Cloud学习】-1.Spring Cloud Ribbon 实现负载均衡 【Spring Cloud学习】-1.Spring Cloud Ribbon 实现负载均衡
1.简介1.1 概述 Ribbon is a client-side load balancer that gives you a lot of control over the behavior of HTTP and TCP clien
下一篇 
【从零开始学Spring Boot】-17.Spring Boot Starter自定义 【从零开始学Spring Boot】-17.Spring Boot Starter自定义
1.简介1.1 概述 A typical Spring Boot starter contains code to auto-configure and customize the infrastructure of a given tec
  目录