spring boot ------@EnableAutoConfiguration工作原理
首先看下 EnableAutoConfiguration 这个类,这个类里面有两个方法
这个两个其实我们都知道是排除配置类的方法
exclude: 类.class
excludeName: 这个是类的全路径。
其实 这个里面主要核心Ipmort 这个注解,我们可以点进去看一下
我们可以看到这个这个类实现了DeferredImportSelector,
DeferredImportSelector这个类又继承了ImportSelector
我们回过头来看AutoConfigurationImportSelector 这个类里面的selectImports 这个方法这个方法是重写了 ImportSelector这个类的方法,
可以看下这个文件
通过SpringFactoriesLoader.loadFactoryNames() 这个方法读取NETA-INF/spring.factories 这个文件里面key(一个类) 对应的value值 多个会用逗号隔开,然后把这些自动配置的类的全名类返回。然后返回的数组里面的className就会被spring 纳入容器管理起来。
其内部关键点:
1.ImportSelector 该方法的返回值会纳入spring 容器种中
2.SpringFactoriesLoader.loadFactoryNames() 读取classPtah下面META-INF/spring.factories下面的配置类。
我们也可以在自己的目录下面去新建META-INF/spring.factories这样的文件,在里面可以去配置自己想要加载的类。
以上说的不是很好,如果有不对的地方请指出来, 谢谢。
网友评论