如何在 micronaut 中使用特定于环境的变量?

han*_*rse 3 kotlin micronaut

我是 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 ?
}
Run Code Online (Sandbox Code Playgroud)

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

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

environment: localhost

mongodb:
  uri: 'mongodb://localhost:27017'
Run Code Online (Sandbox Code Playgroud)

Application.ktmncli 工具生成的其余文件未受影响。如何设置每个环境参数,或在启动 micronaut 时将 yml 文件作为参数传递?

是否有任何约定?

Jam*_*eeh 8

您可以使用-Dmicronaut.environments或通过Micronaut.run在 Application 类的上下文构建器中指定它们来指定环境。

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

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

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

文档对此非常清楚

  • 构建方法 https://docs.micronaut.io/latest/api/io/micronaut/runtime/Micronaut.html#build-java.lang.String...- 返回具有环境方法的“Micronaut”实例https://docs.micronaut.io/latest/api/io/micronaut/runtime/Micronaut.html#environments-java.lang.String...- (2认同)