其中,第一个用法是最常用的,其他用法不常用,但作为程序员,我认为我们有必要了解,让我们知道有这种用法,在某些奇怪的需求出现时,能想到还有这种用法能帮助我们便捷开发,这是我们程序员进阶的必备能力!
java@Component
public class Test {
// 最简单的用法
// @Value("${test.db-url}")
// private String url;
// 基础嵌套
@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}'}")
@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));
}
}
ymltest:
# db-url: 192.168.0.1
db-port: 9527
prefix: db-
db-url
127.0.0.1 9527 127.0.0.1:9527 127.0.0.1:9527 [127, 0, 0, 1]
db-url
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
没读取到时,才与默认值一起附加使用的。建站因为热爱,生活需要Money,请屏幕前的大佬动动您发财的小手,点击一次以示鼓励,祝您生活愉快!
PS:就目前的访问量,即便每个访客都点一次广告,收入也不足以支付运营成本。
如果看不到广告,可能是网络原因或被拦截了,那就算了吧。再次祝您生活愉快~~
本文作者:DingDangDog
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!