一般来说,我对microaut和服务器端编程是新手。不幸的是,micronaut文档对我来说没有太大意义,因为我没有Java背景。很多像“应用上下文”这样的术语在英语中是有意义的,但我不知道如何在实践中使用它们。
尝试从一个非常基本的应用程序开始,根据它所处的环境打印不同的配置(“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文件作为参数传递?
这方面有什么约定吗?
3条答案
按热度按时间bxfogqkk1#
您可以使用
-Dmicronaut.environments
来指定环境,也可以在Application类的上下文构建器Micronaut.run
中指定它们。https://docs.micronaut.io/latest/guide/index.html#environments
例如,
application-env.yml
将被加载。https://docs.micronaut.io/latest/guide/index.html#propertySource
文件上写得很清楚
jdg4fx2g2#
默认情况下,Micronaut仅查找application. yml。然后,对于tests、dev和prod,它加载application.yml,并使用application-test.yml、application-dev.yml和application-prod.yml中定义的值覆盖其中的任何值如果您想启用任何其他环境,则需要手动执行
字符串
https://docs.micronaut.io/latest/guide/index.html#_default_environment
zzzyeukh3#
为了能够在控制器和其他类中使用环境特定的变量,我们必须将它们注入到字段中。
属性值可以与
@Value
、@Property
或@ConfigurationProperties
注解一起加载。字符串
假设
app.message
是在开发环境和测试环境中定义的,它是从最后定义的属性源加载的。(例如,在MICRONAUT_ENVIRONMENTS=dev,test
中,测试定义在最后并优先。)如果
env.test
是在测试环境中定义的,则从application-test.properties
属性源加载它。同样,env.dev
也从application-dev.properties
加载。还要注意的是,只有当 * 未检测到其他活动环境 * 时,才会应用程序构建器的
defaultEnvironments
方法设置的默认环境。否则,将忽略默认环境。