【问题标题】:Environment-specific properties are not loaded in MicronautMicronaut 中未加载特定于环境的属性
【发布时间】:2021-09-24 04:19:01
【问题描述】:

我正在尝试使用 Micronaut 3 加载特定于环境的属性。我有两个文件 application.ymlapplication-dev.yml

application.yml

micronaut:
  security:
    authentication: bearer
    token:
      jwt:
        signatures:
          jwks:
            IdentityServer:
              url: 'https://localhost:5001/.well-known/openid-configuration/jwks'

application-dev.yml

micronaut:
  security:
    authentication: bearer
    token:
      jwt:
        signatures:
          jwks:
            identityServer:
              url: 'https://falconidentity.azurewebsites.net/.well-known/openid-configuration/jwks'

正在尝试访问该 URL

@ConfigurationProperties("micronaut.security.token.jwt.signatures.jwks.identityServer")
public record OAuthProperties(String url) {
}

 var ctx = ApplicationContext.run();
        var teamConfiguration = ctx.getBean(OAuthProperties.class);

在 teamConfiguration 变量中,我可以看到 application.yml 文件中的值,而不是 application-dev.yml 文件中的值。

据我所知,默认情况下,Micronaut 只查找 application.yml。然后,对于测试、dev 和 prod,它加载 application.yml 并用 application-test.yml、application-dev.yml 和 application-prod.yml 中定义的值覆盖那里的任何值。但是,这对我不起作用.

我也设置了默认环境

Micronaut.build(args)
                .mainClass(ApiGateway.class)
                .defaultEnvironments("dev")
                .start();

【问题讨论】:

    标签: java micronaut


    【解决方案1】:

    这里没有设置默认环境

    ApplicationContext.run();
    

    这就是为什么

    【讨论】:

    【解决方案2】:

    您创建第二个没有环境的应用程序,而不是使用现有的具有“开发”环境的应用程序。

    您可以注入现有的上下文而不是创建一个新的上下文

    @Inject
    ApplicationContext applicationContext;
    

    【讨论】:

    • 我不太清楚你在没有环境的情况下创建第二个应用程序,而不是使用带有“dev”环境的现有应用程序。您能否提供更多详细信息
    • 实际我不想设置默认环境,当我从 IDE 运行应用程序时,它应该选择 dev。
    • ApplicationContext.run()Micronaut.build(args).mainClass(ApiGateway.class).defaultEnvironments("dev").start(); 是两个代码块,它们创建了两个独立的 Micronaut 上下文。第一个使用 application.yml,第二个使用 application-dev.yml 作为配置。在 OAuthProperties.java 中,您使用第一个上下文。
    • 我还是不太清楚,我的理解是默认情况下 Micronaut 只查找 application.yml。然后,对于测试、dev 和 prod,它会加载 application.yml 并使用 application-test.yml、application-dev.yml 和 application-prod.yml 中定义的值覆盖其中的任何值
    猜你喜欢
    • 2019-08-24
    • 2011-06-28
    • 1970-01-01
    • 1970-01-01
    • 2011-01-13
    • 2019-07-03
    • 2015-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多