在Spring中有一个接口,可以做到在代码运行期间获取到配置文件的属性,也就是可以做到自己定义并解析@Value("${}")注解的功能。
public interface EmbeddedValueResolverAware extends Aware {
/**
* Set the StringValueResolver to use for resolving embedded definition values.
*/
void setEmbeddedValueResolver(StringValueResolver resolver);
}
就是EmbeddedValueResolverAware,这个接口里有一个方法,功能就是:【把这个StringValueResolver用作解析内置定义的值(也就是配置文件+系统默认配置)】,使用起来也比较简单,如下:
先定义一个自己的类ValueResolverAwareConfig,然后实现EmbeddedValueResolverAware这个接口,然后把StringValueResolver设置给了自己的类的值。
@Configuration
public class ValueResolverAwareConfig implements EmbeddedValueResolverAware {
public void setEmbeddedValueResolver(StringValueResolver resolver) {
HttpInvokerHandler.setProps(resolver);
}
}
然后在使用这个resolver的时候是这样的:
resolver.resolveStringValue(key)
返回值就是这个key对应在配置文件里的值了,为String类型。
借用这个,我们就可以实现自己的@Value注解,或者在代码里写${""}这种形式的代码并自己做解析。