【问题标题】:How can I use environment specific variables in micronaut?如何在 micronaut 中使用环境特定变量?
【发布时间】:2020-07-20 15:47:22
【问题描述】:

总的来说,我是 micronaut 和服务器端编程的新手。不幸的是,micronaut 文档对我来说意义不大,因为我没有 Java 背景。很多像“ApplicationContext”这样的术语在英语中是有意义的,但我不知道如何在实践中使用它们。

尝试从一个非常基本的应用开始,该应用根据所处的环境打印不同的配置(“localhost”、“dev”、“prod”)。

这是我的控制器

@Controller("/")
class EnvironmentController {

    // this should return "localhost", "DEV", "PROD" depending on the environment
    @Get("/env")
    @Produces(MediaType.TEXT_PLAIN)
    fun env() = "???" // what should I put here ?

    // this should return the correct mongodb connection string for the environment
    @Get("/mongo")
    @Produces(MediaType.TEXT_PLAIN)
    fun mongo() = "???" // what should I put here ?
}

这是application.yml。理想情况下,每个环境都有 1 个 yml 文件

micronaut:
  application:
    name: myApp
  server:
    port: 8090

environment: localhost

mongodb:
  uri: 'mongodb://localhost:27017'

Application.ktmn cli 工具生成的其余文件保持不变。如何设置每个环境参数,或者在启动 micronaut 时将 yml 文件作为参数传递?

这方面有什么约定吗?

【问题讨论】:

    标签: kotlin micronaut


    【解决方案1】:

    您可以使用-Dmicronaut.environments 指定环境,或者在应用程序类的上下文构建器Micronaut.run 中指定它们。

    https://docs.micronaut.io/latest/guide/index.html#environments

    然后例如application-env.yml将被加载。

    https://docs.micronaut.io/latest/guide/index.html#propertySource

    文档对此非常清楚

    【讨论】:

    【解决方案2】:

    默认情况下,Micronaut 只查找 application.yml。然后,对于测试、dev 和 prod,它加载 application.yml 并用 application-test.yml、application-dev.yml 和 application-prod.yml 中定义的值覆盖那里的任何值 如果要启用任何其他环境,则需要手动进行

    public static void main(String[] args) {
        Micronaut.build(args)
                 .mainClass(Application.class)
                 .defaultEnvironments("dev")
                 .start();
    }
    

    https://docs.micronaut.io/latest/guide/index.html#_default_environment

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-17
      • 1970-01-01
      相关资源
      最近更新 更多