【发布时间】:2015-05-08 14:55:42
【问题描述】:
我不想使用命令行覆盖现有的 YML 文件配置文件,所以我这样做了。
- 创建文件夹并添加到类路径中
- 在该新文件夹中复制了另一个 application.yml
- 运行此命令
mvn spring-boot:run -Dspring.profiles.active=unit-test
但它仍然从源代码 application.yml 中获取“默认”活动配置文件。我也尝试创建一个 application.properties 而不是 application.yml 但它仍然没有被拾取?
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@EnableAutoConfiguration
@ComponentScan
public class SuchApplication implements CommandLineRunner {
@Autowired
private DogeService dogeService;
@Override
public void run(String... args) {
System.out.println("AutoConfiguration should have wired up our stuff");
System.out.println("Let's see if we are doge-worthy...");
if (dogeService.requiresDogeness()) {
System.out.println(dogeService.leDoge());
} else {
System.out.println("No Doge for us :(");
}
}
public static void main(String[] args) throws Exception {
SpringApplication.run(SuchApplication.class, args);
}
}
我的 resources 文件夹下有以下 YML 文件
spring:
profiles.active: default
---
spring:
profiles: default
doge:
wow: 10
such: so
very: true
---
spring:
profiles: unit-test
doge:
wow: 4
such: so
very: true
【问题讨论】:
-
你的 yml 文件也有
spring.profiles.active干扰从命令行传入的那个,从 yml 文件中删除那个。
标签: spring spring-boot