简介
- @Value是Spring框架的一个注解。
- @Value常用来读取配置文件中的特定配置的。
用法
代码
@Component
public class Test {
@Value("${test.${test.prefix}url:127.0.0.1}")
private String url;
@Value("${test.${test.prefix}port}")
private String port;
@Value("${test.db-url:127.0.0.1}:${test.db-port:8080}")
private String hostPort;
@Value("${test.db-url:127.0.0.1:${test.db-port:8080}}")
private String hostPort2;
@Value("#{'${test.db-url:127.0.0.1}'.split('\\.')}")
private String[] number;
@PostConstruct
public void run() {
System.out.println(url);
System.out.println(port);
System.out.println(hostPort);
System.out.println(hostPort2);
System.out.println(Arrays.asList(number));
}
}
Yaml配置
test:
db-port: 9527
prefix: db-
输出(启动项目,控制台输出)
127.0.0.1
9527
127.0.0.1:9527
127.0.0.1:9527
[127, 0, 0, 1]
192.168.0.1
9527
192.168.0.1:9527
192.168.0.1
[192, 168, 0, 1]
总结
${}可以嵌套使用${}可以并列使用#{}内可以使用SpEl表达式,使用一些简单的Java方法。#{}内可以使用${},但是需要用引号括起来,可以使用单引号'${abc}'或双引号\"${abc}\"。- 根据给出的几个例子,一定可以组合出其他的不常见的用法,可以自行探索。
注意
- 另外注意代码中的
hostPort和hostPort2,在注释掉在yml中的db-url时,看起来效果是一样的,但没注释掉yml中的db-url时,输出的结果hostPort2后边的${}没生效,说明后一个${}是在前一个test.db-url没读取到时,才与默认值一起附加使用的。
|