为什么Spring引导自动配置功能会覆盖配置文件机制?

时间:2017-04-03 02:22:32

标签: spring-boot

这是我创建H2数据源的代码。只有在'dev'配置文件处于活动状态时才可用。

@Bean
@Profile("dev")
public DataSource h2() {
    return new EmbeddedDatabaseBuilder().setType(H2).build();
}

但是当我在没有设置任何配置文件的情况下启动应用程序时,spring boot会初始化H2而忽略配置文件注释。以下是启动时弹簧启动的输出消息:

No active profile set, falling back to default profiles: default

Starting embedded database: url='jdbc:h2:mem:testdb ...

1 个答案:

答案 0 :(得分:0)

该个人资料不会被忽略,并且您的DataSource bean不会被创建。它是由DataSource配置的Spring Boot的DataSourceAutoConfiguration bean。它正在运行,因为H2在类路径上。

如果您不希望自动配置DataSource(以便在dev个人资料处于有效状态时只获得一个),那么您应该排除DataSourceAutoConfiguration

@SpringBootApplication(exclude=DataSourceAutoConfiguration.class)
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}