描述
大家好!我正在解析一个 Spring Boot 配置文件。值并不重要
server.port: 8000
spring.application.name: some application
spring.datasource.driver-class-name: org.whatever.Driver
spring.datasource.password: some_password
spring.datasource.platform: postgres
spring.datasource.url: jdbc:postgresql:does_not_matter
spring.datasource.username: some_username
spring.jpa.database: POSTGRESQL
some.service.endpoint: http://whatever
some.other.service.endpoint: http://something_else
我想提取/分组该文件的不同部分,并寻找进行这种操作的建议/惯用法。我正在尝试遵循 "数据 > 函数 > 宏" 的惯用法和 "一个数据结构的一百个更好的函数"。
具体来说,我想解析/分组网络端点,然后是数据库属性,以便使用一些业务逻辑进行验证。
我已经使用 java.util.Properties
解析了该文件,所以在这里_interesting_。上面的文件已转换为映射。
解决方案 1
为每个我想要的“分组”创建一个单独的函数,解析我想要的,并返回一个只包含我想要的数据的新映射。
defn get-endpoints [props]
返回
`
{
"some.service.endpoint" "http://whatever",
"some.other.service.endpoint" "http://something_else"
}
`
defn get-database-properties [props]
等等。
解决方案 2
向原始映射中添加额外的键来分组我想要的内容。
defn parse-groupings [props]
返回
{
"server.port" "8000",
"spring.application.name" "some application",
"spring.datasource.driver-class-name" "org.whatever.Driver",
;; the rest of the original properties
:groupings {
:web-endpoints {
;; web endpoints go here
},
:database-props {
;; database properties get embedded here
}
}
解决方案 ???
当然,还有更多解决方案,但我想知道社区有何推荐。
谢谢!