最简单的自定义 Spring Boot Starter 实战
1.创建一个最简单的Maven工程
- 只需要依赖 spring-context 即可
- 然后写添加 如下的代码
package com.learn.autoconfiguration.stater;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* describe:
*
* @author huyi
* @date 2020/08/05
*/
@Configuration
public class HuyiConfiguration {
@Bean
public HuyiEduCore huyiEduCore(){
return new HuyiEduCore();
}
}
/**
* describe:
*
* @author huyi
* @date 2020/08/05
*/
public class HuyiEduCore {
public void learn(){
System.out.println("huyi 正在学习 Spring Boot 自动装配原理!");
}
}
- 然后就是META-INF目录下的 spring.facotries
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.learn.autoconfiguration.stater.HuyiConfiguration
2.创建一个Spring Boot 工程
- 添加如下代码
import com.learn.autoconfiguration.stater.HuyiEduCore;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
@SpringBootApplication
public class SpringbootDemoApplication {
public static void main(String[] args) {
ConfigurableApplicationContext ca = SpringApplication.run(SpringbootDemoApplication.class, args);
HuyiEduCore bean = ca.getBean(HuyiEduCore.class);
bean.learn();
}
}
install 一下huyi-starter 工程,给spring-boot-demo工程依赖huyi-starter
启动运行
Spring Boot 自动装配原理
核心逻辑
-
1.@SpringBootApplication 组合注解中 包含@EnableAutoConfiguration注解
-
2.@EnableAutoConfiguration 注解中 @Import({AutoConfigurationImportSelector.class})
-
3.AutoConfigurationImportSelector.class该类里面的逻辑是 加载 Classpath下
MEAT-INF/spring.factories (spring.factories 文件里写了各个需要自动装配模块的 配置类全路径,该文件可以在很多包下都可能有)
-
4.然后解析这些配置类,并且向容器中注入对应例如HuyiEduCore.class 等这些类,我们就可以直接拿来用了
-
前提要了解 @Configuration @Import 这些基本注解