Micronaut 环境
应用程序环境由 Environment 接口建模,它允许在创建 ApplicationContext 时指定一个或多个唯一的环境名称。
初始化环境
Java | Groovy | Kotlin |
|
|
|
活动环境名称允许根据环境加载不同的配置文件,还可以使用 @Requires 注释有条件地加载 bean 或 bean @Configuration 包。
此外,Micronaut 会尝试检测当前环境。例如,在 Spock 或 JUnit 测试中,TEST 环境会自动激活。
可以使用 micronaut.environments 系统属性或 MICRONAUT_ENVIRONMENTS 环境变量指定其他活动环境。这些被指定为逗号分隔的列表。例如:
指定环境
$ java -Dmicronaut.environments=foo,bar -jar myapp.jar
以上激活了名为 foo 和 bar 的环境。
最后,还检测到云环境名称。
环境优先
Micronaut 根据指定的环境加载属性源,如果相同的属性键存在于特定于环境的多个属性源中,则环境顺序决定使用哪个值。
Micronaut 使用以下层次结构进行环境处理(优先级从低到高):
推导环境
来自 micronaut.environments 系统属性的环境
来自 MICRONAUT_ENVIRONMENTS 环境变量的环境
通过应用程序上下文构建器明确指定的环境
这也适用于 @MicronautTest(environments = … )
禁用环境检测
可以通过将 micronaut.env.deduction 系统属性或 MICRONAUT_ENV_DEDUCTION 环境变量设置为 false 来禁用环境的自动检测。这可以防止 Micronaut 检测当前环境,同时仍然使用如上所示专门提供的任何环境。
通过系统属性禁用环境检测
$ java -Dmicronaut.env.deduction=false -jar myapp.jar
或者,您可以在设置应用程序时使用 ApplicationContextBuilder deduceEnvironment 方法禁用环境推导。
使用 ApplicationContextBuilder 禁用环境推导
Java | Groovy | Kotlin |
|
|
|
默认环境
Micronaut 支持一个或多个默认环境的概念。默认环境是仅在没有明确指定或推导其他环境时才应用的环境。可以通过应用程序上下文构建器 Micronaut.build().environments(… )、micronaut.environments 系统属性或 MICRONAUT_ENVIRONMENTS 环境变量显式指定环境。可以推断环境以自动应用适合云部署的环境。如果通过上述任何一种方式找到环境,则不会应用默认环境。
要设置默认环境,请包含一个实现 ApplicationContextConfigurer 并使用 ContextConfigurer 注释的公共静态类:
public class Application {
@ContextConfigurer
public static class DefaultEnvironmentConfigurer implements ApplicationContextConfigurer {
@Override
public void configure(@NonNull ApplicationContextBuilder builder) {
builder.defaultEnvironments(defaultEnvironment);
}
}
public static void main(String[] args) {
Micronaut.run(Application.class, args);
}
}
以前,我们建议使用 Micronaut.defaultEnvironments("dev"),但这不允许提前 (AOT) 编译器检测默认环境。
Micronaut Banner
从 Micronaut 2.3 开始,应用程序启动时会显示一个横幅。它默认启用,它还显示 Micronaut 版本。
$ ./gradlew run
__ __ _ _
| \/ (_) ___ _ __ ___ _ __ __ _ _ _| |_
| |\/| | |/ __| '__/ _ \| '_ \ / _` | | | | __|
| | | | | (__| | | (_) | | | | (_| | |_| | |_
|_| |_|_|\___|_| \___/|_| |_|\__,_|\__,_|\__|
Micronaut (3.8.6)
17:07:22.997 [main] INFO io.micronaut.runtime.Micronaut - Startup completed in 611ms. Server Running: http://localhost:8080
要使用您自己的 ASCII 艺术(此时只是普通的 ASCII)自定义横幅,请创建文件 src/main/resources/micronaut-banner.txt,它将被使用。
要禁用它,请修改您的应用程序类:
public class Application {
public static void main(String[] args) {
Micronaut.build(args)
.banner(false) (1)
.start();
}
}
- 禁用 banner
更多建议: