什么是自动装配?
SpringBoot 的自动装配原理是基于Spring Framework的条件化配置和@EnableAutoConfiquration注解实现的。这种机制允许开发者在项目中引入相关的依赖,SpringBoot 将根据这些依赖自动配置应用程序的上下文和功能。
SpringBoot 定义了一套接口规范,这套规范规定:SpringBoot 在启动时会扫描外部引用jar 包中的METAINF/spring.factories文件,将文件中配置的类型信息加载到 Spring 容器(此处涉及到 JM 类加载机制与Spring 的容器知识),并执行类中定义的各种操作。对于外部jar 来说,!只需要按照 SpringBoot 定义的标准,就能将自己的功能装置进 SpringBoot。
通俗来讲,自动装配就是通过注解或一些简单的配置就可以在SpringBoot的帮助下开启和配置各种功能比如数据库访问、Web开发。
SpringBoot自动装配原理
Spring Boot
启动类上都有一个 @SpringBootApplication
注解,@SpringBootApplication
里面有 @EnableAutoConfiguration
的注解:
自动配置主要由@EnableAutoConfiguration
实现,添加了@EnableAutoConfiguration
注解,会导入AutoConfigurationImportSelector
类,里面的selectImports
方法通过SpringFactoriesLoader.loadFactoryNames()
扫描所有含有META-INF/spring.factories
的jar
包,将对应key
为@EnableAutoConfiguration
注解全名对应的value
类全部装配到IOC
容器中。
不是所有的配置都会装配
扫描类路径: 在应用程序启动时,会扫描类路径上的 META-AutoConfigurationImportSelectorINF/spring.factories 文件,这个文件中包含了各种 Spring 配置和扩展的定义。在这里,它会查找所有实现了Autoconfiguration接口的类,具体的实现为 getcandidateconfigurations 方法。
条件判断: 对于每一个发现的自动配置类, AutoconfigurationImportselector 会使用条件判断机制(通常是通过@ConditionalOnClass 注解或@ConditionalOnMissingBean)来确定是否满足导入条件。这些条件可以是配置属性、类是否存在、 Bean是否存在等等。
根据条件导入自动配置类:满足条件的自动配置类将被导入到应用程序的上下文中。这意味着它们会被实例化并应用于应用程序的配置。
评论区