- @PropertySource
- @Value
- 示例代码
功能:@PropertySource注解用于指定资源文件读取的位置,它不仅能读取properties文件,也能读取xml文件,并且通过YAML解析器,配合自定义PropertySourceFactory实现解析YAML文件。
源码:
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@documented
@Repeatable(PropertySources.class)
public @interface PropertySource {
String name() default "";
String[] value();
boolean ignoreResourceNotFound() default false;
String encoding() default "";
Class extends PropertySourceFactory> factory() default PropertySourceFactory.class;
}
@Value
功能:该注解的作用是将我们配置文件的属性读出来,有@Value(“${}”)和@Value(“#{}”)两种方式。
源码:
@Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@documented
public @interface Value {
String value();
}
示例代码
思路: 将自定义的aliyun.yml配置文件信息获取到spring中,便于源站url替换成cdn站点,防止资源盗链。
- 配置aliyun.yml
aliyun: cdn: url: https://cdn.aliyun.com privateKey: aliyuncdnkey
- 创建ALiYunCdnConfig类
@Component
@Getter
@Setter
@PropertySource("classpath:aliyun.yml")
public class ALiYunCdnConfig {
@Value("${aliyun.cdn.url}")
private String url;
@Value("${aliyun.cdn.privateKey}")
private String privateKey;
}
- 测试获取
编写相应的controller,依赖注入该ALiYunCdnConfig,对需要的源站url进行操作后返回加密后的cdn。



