Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Spring从属性文件加载嵌套占位符_Java_Spring_Properties File - Fatal编程技术网

Java 使用Spring从属性文件加载嵌套占位符

Java 使用Spring从属性文件加载嵌套占位符,java,spring,properties-file,Java,Spring,Properties File,是否可以从属性文件中加载嵌套占位符?我正在尝试动态加载URL 例如,如果我的属性文件包含 my.url=http://localhost:8888/service/{nestedProperty}/ 有没有办法在运行时加载{nestedProperty}的值?类似于ResourceBundle的行为。如果是这样,我将如何有效地实例化字符串?到目前为止我在想 <bean id="myURLString" class="java.lang.String" scope="prototype"

是否可以从属性文件中加载嵌套占位符?我正在尝试动态加载URL

例如,如果我的属性文件包含

my.url=http://localhost:8888/service/{nestedProperty}/
有没有办法在运行时加载{nestedProperty}的值?类似于ResourceBundle的行为。如果是这样,我将如何有效地实例化字符串?到目前为止我在想

<bean id="myURLString" class="java.lang.String" scope="prototype" lazy-init="true">
    <property name="URL" value="${my.url}" />
</bean>
我在这里研究了PropertyPlaceHolderConfigure和其他几个属性文件问题,但我似乎不知道这是否可行

我还应该注意,我想从代码中动态加载这个嵌套属性,或者至少从代码中操作它们(可能通过@PostConstruct?)

是的,这是可能的:

my.url=http://localhost:8888/service/${nestedProperty}
nestedProperty=foo/bar/baz
在你的例子中,在大括号前面加上美元符号,你就成功了

要实际使用完全解析属性,请执行以下操作:

@Value("${my.url}")
private String url;

在Springbean中。

我不需要在bean定义中明确定义这个属性吗?“nestedProperty”指的是该名称的属性(示例的第二行),而不是bean。Spring加载所有配置文件中的所有属性,并相互解析它们。只要避免循环引用就可以了。这是否允许我从ctx.getBean()调用中动态指定嵌套属性,而不是使用“nestedProperty”的属性文件值?请参阅我的更新;实际上,您不必将该属性视为bean,您可以直接将其注入@Value
@Value("${my.url}")
private String url;