【Spring boot】自动装配原理
什么是自动装配
自动装配(Auto-Configuration)是Spring Boot框架的核心特点,通过扫描应用程序的classpath和依赖关系,自动配置和装配Spring应用程序所需的各种组件
在传统的Spring应用程序中,开发者需要手动配置大量的bean,例如数据源、事务管理器、视图解析器等。这些配置过程繁琐而容易出错,加大了开发难度和成本。而Spring Boot的自动装配机制则能够自动完成这些配置过程,使开发者可以更加专注于业务逻辑的实现,高效的构建应用。
Spring Boot自动装配的好处
1、简化配置:Spring Boot的自动装配能够根据应用程序的需求和条件,内置自动配置所需的组件,避免了繁琐的手动配置过程。当然有些没有自动装配的依赖需要手动配置坐标。
2、减少出错:由于自动装配是基于条件化配置的,因此可以避免手动配置过程中出现的错误和疏漏。
3、提高效率:自动装配能够提高开发效率,减少开发时间和成本。开发者不用纠结版本的选择,高效的版本控制。
4、提升可维护性:自动装配使得应用程序的配置更为规范和标准化,提高了可维护性和可扩展性。
Spring Boot的自动装配方式
1、自动配置类:在Spring Boot的jar包中,包含了许多以META-INF/spring.factories文件指定的自动配置类。这些类上通常会有@Configuration注解,表明它们是用来定义Bean的配置类。
2、条件化配置:这些自动配置类使用了诸如@ConditionalOnClass、@ConditionalOnBean、@ConditionalOnMissingBean等@ConditionalOnXXX、条件注解,来决定是否创建和启用配置某个Bean。这些条件注解根据类路径中是否存在某个类、是否已经定义了某个Bean等条件来决定配置是否生效。
3、自定义配置:如果应用程序需要对自动配置进行修改或扩展,可以提供自己的配置类。这样可以通过编写自定义的bean来替换或扩展自动配置中的默认行为。
4、依赖注入:当自动配置类中的条件满足时,SpringBoot会自动创建和配置相应的Bean,并通过依赖注入的方式将它们注入到其他需要它们的Bean中。
Spring Boot 自动装配原理:
1、在Spring Boot启动过程中,解析@SpringBootApplication,得到@ComponentScan和@EnableAutoConfiguration两个核心注解。
2、其中@ComponentScan作用是用来加载当前引导类所在包下的所有bean。
3、 @EnableAutoConfiguration这个注解开启了自动装配的功能improt导入了一个AutoConfigurationImportSelector。
4、 AutoConfigurationImportSelector负责去加载当前项目所有依赖下的MEATA-INF文件夹下的spring.factories文件,对每一个spring.factories文件进行逐行扫描,反射加载对应的配置以及bean.【Spring的SPI机制】
总结:
Spring Boot的自动装配通过条件注解、自动配置类和Starter依赖等机制,根据条件判断和优先级规则来自动配置和装配应用程序所需的组件。这种方式简化了配置过程,同时也保留了灵活性,允许开发者进行自定义配置。