Micronaut - 解析属性文件中的占位符

Posted

技术标签:

【中文标题】Micronaut - 解析属性文件中的占位符【英文标题】:Micronaut - Resolve place holders in properties file 【发布时间】:2019-08-18 08:06:52 【问题描述】:

如何解析类似于下面的属性文件中的占位符。

我正在使用一个外部属性文件 - dev.properties,其条目类似于以下:

db.database: testdb
db.user: testuser
db.password: password
db.dev_server: server1
db.port: 9999
db.url: jdbc:database:$db.dev_server:$db.port/$db.database

使用 -Dmicronaut.config.files=path_to_dev.properties 加载此文件

@ConfigurationProperties("db")
class Config 
    // all the properties (database, user etc) including getters and setters createted 

    public Config () 

    


当我在另一个类中注入 Config 时,它无法解析 url 属性中的占位符。

Caused by: io.micronaut.context.exceptions.ConfigurationException: Could not resolve placeholder $db.dev_server in value: jdbc:database:$db.server:$db.port/$db.database

【问题讨论】:

我在 micronaut 文档中找到了答案。 Micronaut 将属性标准化为 kebab case,因此它无法解析 $dev_server。将其更改为 $dev-server 有效。有没有其他解决方法? 这不是一种解决方法。这是你应该做的 是否有可能记录哪些属性是存在的......因为有时很难找到 【参考方案1】:

这是开发人员在尝试迁移现有项目时首先遇到的问题,因为并非总是属性不遵循 kebab 案例。 如果您迁移项目或第三方库,通常会遇到此问题,但行为是预期的并记录在案。

文档很清楚,它需要烤肉串的情况。 https://docs.micronaut.io/latest/guide/index.html#_property_value_binding

最后,它只是将任何蛇盒或骆驼盒属性转换为烤肉盒。

【讨论】:

以上是关于Micronaut - 解析属性文件中的占位符的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Spring Boot 应用程序中另一个属性文件中的值解析属性文件中的占位符

无法解析字符串值中的占位符

导入 XML 时无法从属性文件中解析占位符

Spring Boot 配置属性的未解决占位符验证

spring源码解析---占位符解析替换

gradle 不会从我在 build.gradle 中指定的库中的依赖版本中的父属性中解析占位符