Springboot中enable註解
阿新 • • 發佈:2019-01-10
這句話可以作為理解springboot自動注入的原理的鑰匙:ImportSelector介面的selectImports返回的陣列(類的全類名)都會被納入到spring容器中.
至於spring怎麼根據類名建立bean的就不用管了。博文地址https://www.jianshu.com/p/464d04c36fb1
public class AutoConfigurationImportSelector implements DeferredImportSelector, BeanClassLoaderAware, ResourceLoaderAware, BeanFactoryAware, EnvironmentAware, Ordered //看這個類實現的介面多複雜
@Override public String[] selectImports(AnnotationMetadata annotationMetadata) { if (!isEnabled(annotationMetadata)) { return NO_IMPORTS; } AutoConfigurationMetadata autoConfigurationMetadata = AutoConfigurationMetadataLoader .loadMetadata(this.beanClassLoader); AutoConfigurationEntry autoConfigurationEntry = getAutoConfigurationEntry( autoConfigurationMetadata, annotationMetadata); return StringUtils.toStringArray(autoConfigurationEntry.getConfigurations()); }
這個方法就是匯入了自動配置的檔案的字串。