@Value
注解用于从配置文件中获取特定的属性值,并注入到 Spring Bean 中。它有多种使用方式,下面列举了一些常见的用法:
先贴图:
1. 注入单个属性值
@Component
public class MyBean {
@Value("${my.property}")
private String myProperty;
// getter 和 setter 方法省略
}
在这个例子中,${my.property}
表示从配置文件中读取 my.property
属性的值,并将其注入到 myProperty
字段中。
2. 注入多个属性值
@Component
public class MyBean {
@Value("${my.property1}")
private String myProperty1;
@Value("${my.property2}")
private int myProperty2;
// getter 和 setter 方法省略
}
可以在同一个 Bean 中使用多个 @Value
注解,分别注入不同的属性值。
3. 使用默认值
@Component
public class MyBean {
@Value("${my.property:default}")
private String myProperty;
// getter 和 setter 方法省略
}
可以在注解中指定默认值,当配置文件中没有对应的属性值时,会使用默认值。
4. 使用 SpEL 表达式
@Component
public class MyBean {
@Value("#{systemProperties['java.home']}")
private String javaHome;
// getter 和 setter 方法省略
}
可以使用 #{...}
语法来执行 SpEL 表达式,例如从系统属性中获取值。
5. 注入集合类型
@Component
public class MyBean {
@Value("#{'${my.list}'.split(',')}")
private List<String> myList;
// getter 和 setter 方法省略
}
可以将属性值解析为集合类型,例如 List。
6. 注入对象类型
@Component
public class MyBean {
@Value("#{${my.map}}")
private Map<String, String> myMap;
// getter 和 setter 方法省略
}
可以将属性值解析为对象类型,例如 Map。
7. 注入资源文件路径
@Component
public class MyBean {
@Value("classpath:myFile.txt")
private Resource myResource;
// getter 和 setter 方法省略
}
可以使用 classpath:
前缀来注入类路径下的资源文件。
8. 注入环境变量
@Component
public class MyBean {
@Value("${JAVA_HOME}")
private String javaHome;
// getter 和 setter 方法省略
}
可以直接注入环境变量值。
这些是 @Value
注解的一些常见用法,它提供了灵活的方式来获取配置文件中的属性值,并将其注入到 Spring Bean 中。