spring boot(2.4.x之前版本)和spring cloud项目中自动装配的监听执行顺序
warning:
这篇文章距离上次修改已过421天,其中的内容可能已经有所变动。
在Spring Boot 2.4.x以及更早的版本中,自动配置类的加载和执行顺序如下:
- Spring Boot基础自动配置类(位于
spring-boot-autoconfigurejar包中)。 - 应用程序特定的自动配置类,通常定义在应用程序的
src/main/java目录下的包中。 @SpringBootApplication注解的类,它可以包含@Import注解来导入额外的配置类。- 通过
spring.factories文件定义的Spring应用程序的扩展点,这包括由spring-boot-starter提供的自动配置类。 - 通过
@Conditional注解指定条件的配置类,只有当条件满足时才会被加载和执行。
在这个过程中,不同的自动配置类可能会相互冲突或者有先后依赖关系,Spring Boot会根据这些条件注解来确定配置类的加载和执行顺序。
需要注意的是,自动配置的执行顺序通常不需要手动干预,因为Spring Boot的条件注解能够很好地处理这些依赖关系。如果确实需要控制特定的配置类的加载顺序,可以通过使用@AutoConfigureBefore和@AutoConfigureAfter注解来手动指定。
以下是一个简单的例子,展示如何使用@AutoConfigureBefore和@AutoConfigureAfter来控制自动配置类的加载顺序:
@Configuration
@AutoConfigureAfter(MyLastAutoConfiguration.class)
public class MyAutoConfiguration {
// 配置内容
}
@Configuration
@AutoConfigureBefore(MyAutoConfiguration.class)
public class MyFirstAutoConfiguration {
// 配置内容
}在这个例子中,MyFirstAutoConfiguration将在MyAutoConfiguration之前执行,而MyAutoConfiguration将在MyLastAutoConfiguration之后执行。这种方式可以确保配置按照特定的顺序进行。
评论已关闭