请关注我的微信公众号
个人微信公众号
技术交流群 (仅作技术交流):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。
网友评论