springboot配置扫描生效顺序
Spring Boot中配置扫描的生效顺序通常是按照以下步骤进行的:
@SpringBootApplication
注解是一个方便的组合注解,它包含了@ComponentScan
,该注解会扫描与启动类相同包或子包下的组件。- 如果启动类不在顶层包中,可以在启动类上使用
@ComponentScan
指定扫描的包路径。 - 使用
@Import
注解导入的配置类。 - 使用
@ImportResource
注解导入的XML配置文件。 - 通过
spring.config.import
属性导入的配置,例如通过文件路径或者配置服务器。 - 应用程序属性文件(
application.properties
或application.yml
)中的配置。 - 命令行参数或系统属性设置的配置。
- 在
SpringApplication
构建时通过properties
方法设置的配置。 - 由
SpringApplication
的addListeners
方法添加的监听器。 - 由
SpringApplication
的addInitializers
方法添加的初始化器。
以上步骤中,配置会根据它们定义的位置和方式被合并和应用。通常,代码中后面定义的配置会覆盖前面定义的同名配置。
下面是一个简单的例子来说明如何使用 @ComponentScan
来改变扫描的包路径:
// 假设你的应用类位于com.example包下
@SpringBootApplication
@ComponentScan(basePackages = "com.example.other")
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
在这个例子中,@ComponentScan
指定了 Spring Boot 扫描 com.example.other
包及其子包下的组件。这会影响 Spring 容器中 Bean 的自动发现过程。
评论已关闭