描述
大家好!我在解析一个 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 个更好的函数”。
具体来说,我希望能解析 / 组合网络端点,然后是数据库属性,以便使用一些业务逻辑进行验证。
我已经使用 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
}
}
解决方案 ???
当然还有很多其他的解决方案,但我想知道社区的建议。
谢谢!