聊聊Spring Boot的自动配置

介绍

Spring Boot的自动配置是其一大核心特性,可以让我们迅速构建出一个Spring应用程序。

特点

  1. 根据classpath中的Jar包依赖,自动配置Spring的基础配置项。如根据spring-data-jpa在classpath中自动配置Spring Data JPA。
  2. 提供了一系列的开箱即用的自动配置实现,解决了配置文件配置大量Bean的问题。这些自动配置实现都在spring-boot-autoconfigure包中。
  3. 自动配置会根据用户定义的Bean决定是否启用,可以进行自定义和重写。通过@Conditional注解实现条件化配置。
  4. 提供了众多开箱即用的启动器依赖,进一步简化了依赖管理,如spring-boot-starter-web等。
  5. 自动配置只会加载实际用到的配置项,通过@ConditionalOnClass、@ConditionalOnMissingBean等条件化配置来实现。
  6. 提供了准生产的外置配置文件支持,如application.properties。
  7. 可以通过@EnableAutoConfiguration控制自动配置的开关。

实现

1.@SpringBootApplication

这个注解包含了@EnableAutoConfiguration,它用来开启Spring Boot的自动配置功能。

@EnableAutoConfiguration 会利用AutoConfigurationImportSelector给容器导入一些自动配置类。

2. SpringFactoriesLoader

Spring Boot会通过SpringFactoriesLoader来加载META-INF/spring.factories文件中的自动配置类。

spring.factories文件中配置了很多自动配置的实现类,如:

org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration

org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration

当类路径下存在指定的依赖时,该依赖对应的自动配置类才会被实例化。

3.@Conditional

自动配置类上通常都使用了@Conditional注解,根据不同的条件来控制配置是否生效。

常用的有:@ConditionalOnClass、@ConditionalOnMissingBean等。

写在最后

如果大家对相关文章感兴趣,可以关注公众号"架构殿堂",会持续更新AIGC,java基础面试题, netty, spring boot,spring cloud等系列文章,一系列干货随时送达!

猜你喜欢

转载自blog.csdn.net/jinxinxin1314/article/details/132540272