Luc*_*cas 2 java configuration spring json spring-boot
我最近了解到Spring可以生成文件spring-configuration-metadata.json并创建additional-spring-configuration-metadata.json文件。
是否可以通过 Spring 本机访问此信息,例如,能够打印从此 JSON 文件中提取的帮助消息?我没有看到Spring 文档中提到的任何内容。据我所知,配置类是 POJO,在实际注入的对象中没有任何与它们关联的 Spring 元数据。
假设我有以下课程:
package test;
import org.springframework.boot.context.properties.ConfigurationProperties;
@ConfigurationProperties(prefix = "myConfig")
public class MyConfig
{
/**
* myField description.
*/
private int myField = 3;
public int setMyField(int i){ myField = i; }
public int getMyField(){ return myField; }
}
Run Code Online (Sandbox Code Playgroud)
这将生成以下元数据:
{
"groups": [{
"name": "myConfig",
"type": "test.MyConfig",
"sourceType": "test.MyConfig"
}],
"properties": [
{
"name": "myConfig",
"type": "java.lang.Integer",
"description": "myField description.",
"sourceType": "test.MyConfig",
"defaultValue": 3
}
],
"hints": []
}
Run Code Online (Sandbox Code Playgroud)
理想情况下,我会有某种方式来写作MyConfig.getMyField().getDescription()并获得回报"myField description"。我还希望能够在 JSON 中添加其他元数据并以类似的方式检索它们。
Spring Boot 附带了一个单独的模块来完成此任务。它在内部用于验证元数据一致性的工具,这也是 STS 支持的基础。
检查spring-boot-configuration-metadata项目。
如果将其添加到项目中,您可以轻松构建当前类路径中定义的密钥存储库:
Resource[] resources = new PathMatchingResourcePatternResolver()
.getResources("classpath*:META-INF/spring-configuration-metadata.json");
ConfigurationMetadataRepositoryJsonBuilder builder = ConfigurationMetadataRepositoryJsonBuilder.create();
for (Resource resource : resources) {
try (InputStream in = resource.getInputStream()) {
builder.withJsonResource(in);
}
}
ConfigurationMetadataRepository repository = builder.build();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
791 次 |
| 最近记录: |