简介
- @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 没读取到时,才与默认值一起附加使用的。
|