我可以在Spring Boot中的@propertysource文件中激活配置文件吗?



我想从应用程序中的属性文件中激活一个配置文件。最终,我想动态激活配置文件,但我想从静态

开始

我的应用程序

@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

我的输出是读取我的作品的证明,但忽略了配置文件

没有活动配置文件集,落到默认配置文件:默认配置文件

显示:ABC

也许我应该解释我想实现的目标。我的弹簧前启动应用程序行为取决于环境,例如,如果使用$ENV=DEV开发配置。我想迁移到Spring Boot并将配置放在配置文件中,但我想保持环境不变。我想实现

if $ENV=DEV then profile DEV is selected

我的想法是用spring.profiles.active=$ENV添加my.properties,但它不起作用

不,你不能那样做。@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);
}

相关内容

  • 没有找到相关文章

最新更新