在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); }
结果如下: