Spring Boot中的自定义PropertySource可防止加载某些属性

时间:2015-02-09 10:52:43

标签: java spring spring-boot

我在spring boot中定义了自定义PropertySource,它执行属性的解密。当我在我的应用程序代码中请求属性值时,一切正常,但是我注意到框架使用/加载了一些属性。 (我记录通过PropertySource请求的每个属性)

即。未加载以下内容:

http.mappers.json-pretty-print=true
server.ssl.key-store-type=....
server.ssl.key-store=....
server.ssl.key-store-passsowrd=....
server.ssl.key-password=....

我注意到,如果我的PropertySource extednds EnumerablePropertySource<Properties>,一切都按预期工作。

为什么?为什么我必须扩展EnumerablePropertySource?

1 个答案:

答案 0 :(得分:3)

Spring Boot在binding configuration时使用DataBinderDataBinder需要PropertyValues实现作为要绑定的属性的源。 PropertyValues合同的一部分是提供对所有已知属性值的访问。适配器PropertySourcesPropertyValues用于将所有应用程序的PropertySource公开为PropertyValues实现。如果您的自定义PropertySource不是EnumerablePropertySource,则适配器无法访问其所有属性,因此不会包含它们。