描述
大家好!我有一个 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
我正在尝试解析/分组文件的不同部分,并寻找建议的/符合语法的实现方式。我正在尝试遵循“数据 > 函数 > 宏”的惯用法以及“针对一种数据结构的 100 个更好函数”。
具体来说,我正在查看如何解析/分组 Web 端点和数据库属性,以便使用某些业务逻辑进行验证。
我已经使用 java.util.Properties
解析了该文件,因此这在这里不重要。上面的文件已经被转换成了映射。
解决方案 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
}
}
解决方案 ???
当然,有更多解决方案,但我想知道社区推荐哪种。
谢谢!