我想在应用程序中的属性文件中激活配置文件。最终我想动态激活配置文件,但我想从静态
开始我的申请
@SpringBootApplication @PropertySource("classpath:/my.properties")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Component public static class MyBean {
@Autowired public void display(@Value("${abc}") String abc) {
System.out.println("Post:"+ abc);
}
my.properties:
spring.profiles.active=STAT
abc=ABC
我的输出证明my.properties已被读取,但配置文件被忽略
未设置有效的配置文件,回退到默认配置文件:默认
显示:ABC
也许我应该解释一下我想要实现的目标。我的Spring Boot之前的应用程序行为取决于环境,例如,如果使用$ENV=DEV
开发配置。我想迁移到Spring启动并将配置文件放到配置文件中,但我希望保持环境不变。
我想要实现
if $ENV=DEV then profile DEV is selected
我的想法是在my.properties
添加spring.profiles.active=$ENV
但不起作用
答案 0 :(得分:1)
不,你不能那样做。读取@PropertySource
为时已晚,不会对应用程序引导程序产生任何影响。
SpringApplication
只是更加完整的捷径。您可以在应用程序启动之前阅读所需的任何属性并启用配置文件,例如:
public static void main(String[] args) {
String env = System.getenv().get("ENV");
// Some sanity checks on `env`
new SpringApplicationBuilder(Application.class).profiles(env).run(args);
}