欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 前端技术 > javascript >内容正文

javascript

Spring boot容器导入组件

发布时间:2025/3/20 javascript 36 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Spring boot容器导入组件 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

@Import

向容器中,导入组件

@Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @AutoConfigurationPackage @Import({EnableAutoConfigurationImportSelector.class}) public @interface EnableAutoConfiguration {

EnableAutoConfigurationImportSelector.class

点击,进入
自动配置导包选择器

@Deprecated public class EnableAutoConfigurationImportSelector extends AutoConfigurationImportSelector {

AutoConfigurationImportSelector

点击,进入

public String[] selectImports(AnnotationMetadata annotationMetadata) {if(!this.isEnabled(annotationMetadata)) {return NO_IMPORTS;} else {try {AutoConfigurationMetadata autoConfigurationMetadata = AutoConfigurationMetadataLoader.loadMetadata(this.beanClassLoader);AnnotationAttributes attributes = this.getAttributes(annotationMetadata);List<String> configurations = this.getCandidateConfigurations(annotationMetadata, attributes);configurations = this.removeDuplicates(configurations);configurations = this.sort(configurations, autoConfigurationMetadata);Set<String> exclusions = this.getExclusions(annotationMetadata, attributes);this.checkExcludedClasses(configurations, exclusions);configurations.removeAll(exclusions);configurations = this.filter(configurations, autoConfigurationMetadata);this.fireAutoConfigurationImportEvents(configurations, exclusions);return (String[])configurations.toArray(new String[configurations.size()]);} catch (IOException var6) {throw new IllegalStateException(var6);}} }

selectImports

方法,将所有需要导入的组件,以全类名的方式返回
这些组件就会被添加到容器中

Configurations

容器,需要导入的组件
给容器中导入非常多的自动配置类xxxAutoConfiguration
就是,给容器中导入这个场景需要的所有组件,并配置好这些组件
有了自动配置类,免去了我们手动编写配置注入功能组件等的工作

getCandidateConfigurations(annotationMetadata, attributes) protected List<String> getCandidateConfigurations(AnnotationMetadata metadata, AnnotationAttributes attributes) {List<String> configurations = SpringFactoriesLoader.loadFactoryNames(this.getSpringFactoriesLoaderFactoryClass(), this.getBeanClassLoader());Assert.notEmpty(configurations, "No auto configuration classes found in META-INF/spring.factories. If you are using a custom packaging, make sure that file is correct.");return configurations; } SpringFactoriesLoader.loadFactoryNames(this.getSpringFactoriesLoaderFactoryClass(), this.getBeanClassLoader());

配置文件位置

文件内容


Spring Boot
在启动的时候,从类路径下的META-INF/spring.factories中
获取EnableAutoConfiguration指定的值,将这些值作为自动配置类导入到容器中
自动配置类就生效,帮我们进行自动配置工作

J2EE的整体整合解决方案和自动配置都在

spring-boot-autoconfigure-1.5.9.RELEASE.jar

总结

以上是生活随笔为你收集整理的Spring boot容器导入组件的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。