描述
大家好!我有一个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
}
}
解决方案 ???
当然,还有更多解决方案,但我想知道社区推荐哪种。
谢谢!