1.找到springboot starter 自动注入的原理:
追踪@SpringBootApplication 注解
可以看到他会这个注解会导入AutoConfigurationImportSelector类型的类,他会找到selectImports方法,然后导入相关的类。
可以看到第三方包,导入进来的时候,他会在这个文件下找哪些包导入。
所以我们创建第三方包的时候,要配置这个文件。
下面开始依托springboot 手写一个第三方包
结构目录如下
package com.example;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
@ConditionalOnClass(MyService.class) // 确保MyService类在类路径中
public class MyAutoConfiguration {
@Bean
@ConditionalOnMissingBean // 如果没有其他同名Bean,则创建一个
public MyService myService() {
return new MyService();
}
}
package com.example;
public class MyService {
public String sayHello() {
return "Hello from MyService!";
}
}
src\main\resources\META-INF\spring\org.springframework.boot.autoconfigure.AutoConfiguration.imports
com.example.MyAutoConfiguration
然后maven install 安装到本地maven仓库,另外一个项目就能导入坐标进行使用啦。
另一个项目引用
自动注入成功,并成功输出