此接口规范了解析底层任意property资源的接口
public interface PropertyResolver {
/**
* 查看规定指定的key是否有对应的value
* 对应key的值是null的话也算是不能解析
*/
boolean containsProperty(String key);
/**
* 返回指定key对应的value,如果没有则返回null
*/
String getProperty(String key);
/**
* 返回指定key对应的value,如果没有则返回defaultValue
*/
String getProperty(String key, String defaultValue);
/**
* 返回指定key对应的value,会解析成指定类型。如果没有对应值则返回null
*/
<T> T getProperty(String key, Class<T> targetType);
/**
* 返回指定key对应的value,会解析成指定类型。如果没有对应值则返回defaultValue
*/
<T> T getProperty(String key, Class<T> targetType, T defaultValue);
/**
* 转换指定key对应的value为指定类型。如果没有则返回null。
* 如果指定key对应的value不能转换成指定类型,则抛出ConversionException
*/
@Deprecated
<T> Class<T> getPropertyAsClass(String key, Class<T> targetType);
/**
* 转换指定key对应的value为指定类型。如果没有直接抛异常,所以不用担心返回值是null
*/
String getRequiredProperty(String key) throws IllegalStateException;
/**
* 返回指定key对应的value为指定类型。如果没有直接抛异常,所以不用担心返回值是null
*/
<T> T getRequiredProperty(String key, Class<T> targetType) throws IllegalStateException;
/**
* 解析${...}这种类型的占位符,把他们替换为使用getProperty方法返回的结果,解析不了并且没有默认值的占位符
* 会被忽略
*/
String resolvePlaceholders(String text);
/**
* 解析${...}这种类型的占位符,把他们替换为使用getProperty方法返回的结果,解析不了并且没有默认值的占位符
* 会抛异常
*/
String resolveRequiredPlaceholders(String text) throws IllegalArgumentException;
}