概述
Spring
使用接口PropertyResolver
抽象了从底层来源获取属性的基本功能,和解析${...}
这样的占位符的功能。
至于底层属性源具体是什么,如何抽象,是一个属性源还是聚合了多个属性源,这些都由实现子类在实现层面考虑。
该接口位于
org.springframework.core.env
。
源码解析
该接口定义的功能如下 :
boolean containsProperty(String key)
– 是否包含某个属性String getProperty(String key)
– 获取指定属性的值(字符串类型),不存在的话返回null
String getProperty(String key, String defaultValue)
– 获取指定属性的值(字符串类型),不存在的话返回defaultValue
T getProperty(String key, Class<T> targetType)
– 获取指定属性的值(指定类型),不存在的话返回null
T getProperty(String key, Class<T> targetType,T defaultValue)
– 获取指定属性的值(指定类型),不存在的话返回defaultValue
String getRequiredProperty(String key)
– 获取指定属性的值(字符串类型),不存在的话抛出异常IllegalStateException
String getRequiredProperty(String key, Class<T> targetType)
– 获取指定属性的值(指定类型),不存在的话抛出异常IllegalStateException
String resolvePlaceholders(String text)
– 解析text
中的${...}
占位符,忽略不能解析的占位符String resolveRequiredPlaceholders(String text)
– 解析text
中的${...}
占位符,如果占位符不能被解析则抛出异常IllegalArgumentException
参考文章
Spring 工具建模 – PropertySourcesPropertyResolver 从PropertySources解析属性