springboot相比springframework更加方便的一点就是可以自动装配,省去我们很多配置的麻烦。
我们自己也可以自定义starter,其中一个关键的文件是/META-INF/spring.factories
最近尝试使用springboot3做新项目开发,发现居然无法用原来的方法自定义starter了,尝试半天都失败,我都怀疑自己老糊涂,忘记具体步骤了,于是上网搜索,照步骤做也失败。有些帖子还会讲原理贴代码,心想也许新版有变化,自己也跟下代码吧。
AutoConfigurationImportSelector是自动装配中一个关键的类,从selectImports一直往下追,到
public static ImportCandidates load(Class<?> annotation, ClassLoader classLoader)
这个方法,发现一行代码
String location = String.format(LOCATION, annotation.getName());
其中
private static final String LOCATION = "META-INF/spring/%s.imports";
框架居然不是在找spring.factories,结合getCandidateConfigurations方法中
Assert.notEmpty(configurations,
"No auto configuration classes found in "
+ "META-INF/spring/org.springframework.boot.autoconfigure.A