spring boot(2.4.x之前版本)和spring cloud项目中自动装配的监听执行顺序
在Spring Boot 2.4.x以及更早的版本中,自动配置类的加载和执行顺序如下:
- Spring Boot基础自动配置类(位于
spring-boot-autoconfigure
jar包中)。 - 应用程序特定的自动配置类,通常定义在应用程序的
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
之后执行。这种方式可以确保配置按照特定的顺序进行。
评论已关闭