前言
使用@ConfigurationProperties能够将配置注入到整个类中,而@Value注解能够将配置注入到字段中,进行更为细粒度的控制。
源码
@Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Value {
String value();
}
注意:注解修饰的字段不能为static或者final。
使用
使用上有两种形式:
@Value("${}"),用来加载外部文件中的值;
@Value("#{}"),用于执行SpEl表达式,并将内容赋值给属性。
我们可以获取Spring Boot配置文件(.yml或.properties)中的属性值并将其赋值给指定变量。
...
@Value("${my.config.field}")
private String value;
...
SpEL是一种表达式语言,能够动态的运行语句。 如果有使用Thymeleaf,会感到一种熟悉感。
...
@Value("#{1 + 1}")
private Integer value; // 2
...