Spring中@Value注解的使用方法详解
Spring中的@Value注解
在spring项目中必不可少的就是读取配置文件,那么读取配置文件就有两种方式。一种就是使用Spring中@Value注解,还有一种是使用SpringBoot中的@ConfigurationProperties注解,本篇文章主要是介绍常用的第一种方式
@Value 注解有两种方式,@Value(“${}”)和@Value(“#{}”)两种方式
第一种 @Value(“${}”)是用来获取配置文件 第二种@Value(“#{}”)是用来表示 SpEl 表达式通常用来获取 bean 的属性,或者调用 bean 的某个方法。
$号用法
获取application.yml文件中port
先说配置文件中属性的注入
server: port: 8129
测试代码如下
@Value("${server.port}")
private String port;
@Test
public void getPort(){
System.out.println("############"+port+"############");
}
测试结果如下

$号用法
测试获取自定义的配置文件中的属性
先配置自定义配置文件
1,在application.yml文件中加上这一句

2,然后编写application-config.yml配置文件,加上测试属性中多个值的情况

测试代码如下
// 测试自定义的配置文件
@Value("${user.password}")
private String password;
@Test
public void getPassword(){
System.out.println(password);
}
//测试配置多个值
@Value("${users}")
private String[] toolArray;
@Value("${users}")
private List<String> toolList;
@Test
public void getTools(){
System.out.println(toolArray);
// 反射得到其类型
String typeName = toolList.getClass().getTypeName();
System.out.println(typeName);
System.out.println(toolList);
}
测试结果如下:
测试自定义配置文件中的属性结果:

测试数组类型结果:

不加#号或者$号的注入
用途暂未知
代码如下:
@Value("hello")
private String value;
@Test
public void getValue(){
System.out.println(value);
}
测试结果如下

#号的用法
注入其他Bean中的属性
先创建一个Bean并且注入到spring容器中
@Component("myBeans")
public class other {
@Value("hello")
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
测试方法如下:
// 注入其他Bean的属性
@Value("#{myBeans.name}")
private String fromAnotherBean;
@Test
public void getFromAnotherBean(){
System.out.println(fromAnotherBean);
}
结果如下:

到此这篇关于Spring中@Value注解的使用方法详解的文章就介绍到这了,更多相关@Value注解内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Spring Boot 使用WebAsyncTask异步返回结果
这篇文章主要介绍了Spring Boot 使用WebAsyncTask异步返回结果的相关资料,需要的朋友可以参考下2018-02-02


最新评论