gpt4 book ai didi

java - 未使用 PropertySource 中的属性

转载 作者:行者123 更新时间:2023-11-30 01:48:10 26 4
gpt4 key购买 nike

我有一个关于以编程方式向 Spring 上下文添加属性的问题。

GenericXmlApplicationContext ctx = new GenericXmlApplicationContext();
ConfigurableEnvironment ctxEnvironment = ctx.getEnvironment();
ctxEnvironment.getPropertySources().addFirst(new ResourcePropertySource("rootProperties", new FileSystemResource("/tmp/root.properties")));
ctx.load(new ClassPathResource("/context/application-context.xml"));
ctx.refresh();

根.属性:

test=hello

来自应用程序上下文的片段:

...
<property name="test" value="${test} world"/>
...

当我从上下文加载 bean 时,${test} 不会替换为“hello”。

Spring 版本:5.1.5.RELEASE

我在这里缺少什么?

PS:顺便说一句,这有效:

 System.out.println("Text: " + ctxEnvironment.resolvePlaceholders("${test}"));

输出:

 Text: hello

编辑:抱歉,我忘记添加:我不想使用 context:property-placeholder bean,因为我只在运行时知道属性文件的位置。

最佳答案

我复制了你的案例,它对我有用。您需要在 applicationContext.xml 文件中添加属性占位符:

    <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">

<context:property-placeholder location="file:/tmp/root.properties" />
<bean id="myA" class="com.zpavel.MyA">
<property name="test" value="${test}" />
</bean>
</beans>

例如一个简单的bean:

public class MyA {

private String test;

public String getTest() {
return test;
}

public void setTest(String test) {
this.test = test;
}
}

您可以使用以下方式加载它:

ApplicationContext context = new ClassPathXmlApplicationContext("classpath:/context/application-context.xml");
MyA myA = context.getBean(MyA.class);
System.out.println(myA.getTest());

它将按预期打印“hello”。

关于java - 未使用 PropertySource 中的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57148988/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com