如何在 micronaut 中使用环境特定变量?
How can I use environment specific variables in 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 ?
}
这是application.yml
。理想情况下,我会为每个环境准备 1 个 yml 文件
micronaut:
application:
name: myApp
server:
port: 8090
environment: localhost
mongodb:
uri: 'mongodb://localhost:27017'
Application.kt
与 mn
cli 工具生成的其余文件保持不变。如何设置每个环境参数,或者在启动 micronaut 时将 yml 文件作为参数传递?
关于这个有什么约定吗?
您可以使用 -Dmicronaut.environments
指定环境,或者通过在您的应用程序 class.
的上下文构建器 Micronaut.run
中指定它们
https://docs.micronaut.io/latest/guide/index.html#environments
然后例如 application-env.yml
将被加载。
https://docs.micronaut.io/latest/guide/index.html#propertySource
文档对此非常清楚
默认情况下,Micronaut 只查找 application.yml。然后,对于测试、开发和生产,它加载 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
一般来说,我是 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.kt
与 mn
cli 工具生成的其余文件保持不变。如何设置每个环境参数,或者在启动 micronaut 时将 yml 文件作为参数传递?
关于这个有什么约定吗?
您可以使用 -Dmicronaut.environments
指定环境,或者通过在您的应用程序 class.
Micronaut.run
中指定它们
https://docs.micronaut.io/latest/guide/index.html#environments
然后例如 application-env.yml
将被加载。
https://docs.micronaut.io/latest/guide/index.html#propertySource
文档对此非常清楚
默认情况下,Micronaut 只查找 application.yml。然后,对于测试、开发和生产,它加载 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