1. 程式人生 > >Springboot中enable註解

Springboot中enable註解

  這句話可以作為理解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());
	}

  這個方法就是匯入了自動配置的檔案的字串。