java 如何从其他@Value引用@Value中的内容

ttcibm8c  于 2023-03-06  发布在  Java
关注(0)|答案(1)|浏览(169)

我的spring bean中有很多@Value属性,大多数时候只有第一个属性在属性文件中设置,其他属性应该从第一个属性中获取它们的值,如果没有被覆盖的话,它们应该有合理的默认值。
不幸的是,这只适用于一个级别。如果我试图引用一个属性与2级它找不到它了。

@Component("pvcConfiguration")
public class PvcConfiguration {

    @Value(value = "${com.abc.pvc.path}")
    private Path path;
    
    // one level works fine
    @Value(value = "${com.abc.pvc.ftp.path:${com.abc.pvc.path}/ftp}")
    private Path ftpPath;

    // two levels do not work
    @Value(value = "${com.abc.pvc.etc.path:${com.abc.pvc.ftp.path}/etc}")
    private Path etcPath;

}

错误信息:

Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'com.abc.pvc.ftpPath' in value "com.abc.pvc.etcPath:${ch.sbb.infop.pvc.ftp.path}/etc"

有什么办法让它工作吗?

7cjasjjr

7cjasjjr1#

@Value(value = "${com.abc.pvc.path}")
private Path path;

// one level works fine
@Value(value = "${com.abc.pvc.ftp.path:${com.abc.pvc.path}/ftp}")
private Path ftpPath;

// two levels do not work
@Value(value = "${com.abc.pvc.etc.path:${com.abc.pvc.ftp.path:${com.abc.pvc.path}}/etc}")
private Path etcPath;

当你设置ftpPath时,你没有设置占位符com.abc.vc.ftp.path
导向器https://www.baeldung.com/spring-value-annotation

相关问题