请关注我的微信公众号

技术交流群 (仅作技术交流):642646237
请关注我的头条号:

如果有多个子项目,并且每个子项目都配置了各自的bean,那么spring可以起作用吗?这时候@EnableAutoConfiguration
就能够发挥它的作用了。
下面先通过一个例子来演示一下。
@EnableAutoConfiguration
例子——主项目
还是直接从之前的项目拷贝过来,入口程序如下:

@EnableAutoConfiguration
例子——子项目
新建一个项目springboot_start_EnableAutoConfiguration_core_bean,pom.xml
如下:

该子项目只有一些bean的配置:



@EnableAutoConfiguration
例子——主项目引用子项目

@EnableAutoConfiguration
例子——子项目的bean配置如何让主项目使用
在子项目中创建src\main\resources\META-INF\spring.factories文件,内容如下:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.maijunjin.springboot.springboot_start_EnableAutoConfiguration_core_bean.RunnableConfiguration,com.maijunjin.springboot.springboot_start_EnableAutoConfiguration_core_bean.UserConfiguration,com.maijunjin.springboot.springboot_start_EnableAutoConfiguration_core_bean.vo.Role
现在重新运行主项目的App,结果如下:

@EnableAutoConfiguration
原理解析

可以很清楚地看到
EnableAutoConfiguration
注解引入了EnableAutoConfigurationImportSelector
类,而EnableAutoConfigurationImportSelector
又实现了ImportSelector
接口,在之前的教程说过

selectImports
方法返回的字符串数组会被加入到spring容器中。下面看看
selectImports
方法:


SpringFactoriesLoader.loadFactoryNames
会加载类路径下META-INF/spring.factories
文件的内容。
其他更详细的内容请自行查阅。
是否启用EnableAutoConfiguration
可以在配置文件中配置spring.boot.enableautoconfiguration=true,该属性默认为true。
EnableAutoConfiguration
排除某些类

下面看看spring自带的

网友评论