gpt4 book ai didi

java - 在java中的bean中插入${xxx}的值

转载 作者:行者123 更新时间:2023-12-01 09:46:14 26 4
gpt4 key购买 nike

我在 XML 中定义了一个 bean

<bean class="some.class.Clazz">
<property name="user" value="${user}"/>
</bean>

之后,我想在java中插入值,我有这样的代码:

ConfigurableApplicationContext ctx = new ClassPathXmlApplicationContext("main.xml");
Properties ftpSessionProps = new Properties();
ftpSessionProps.setProperty("user", "first");

StandardEnvironment env = new StandardEnvironment();
env.getPropertySources().addLast(new PropertiesPropertySource("pops", ftpSessionProps));
ctx.setEnvironment(env);
ctx.refresh();
ctx.start();

但它永远不会起作用......

我尝试添加

<context:property-placeholder />

xml 文件中,它给了我日志:

Could not resolve placeholder 'user' in string value "${user}"

有什么建议吗?或者推荐书籍或文章?

谢谢!

更新

似乎无法使用新的 env 刷新类“ConfigurableApplicationContext”。所以我们应该谨慎选择context类。可以刷新一个 AbstractRefreshableConfigApplicationContext,并且您应该仅使用空资源来初始化它。设置环境后手动设置configLocation

最佳答案

带有String参数的构造函数会自动处理文件,但由于尚未设置环境而失败。

您需要使用zero-parameter constructor ,调用setConfigLocationsetEnvironment,然后refreshstart:

AbstractRefreshableConfigApplicationContext ctx = new ClassPathXmlApplicationContext(); // init empty
Properties ftpSessionProps = new Properties();
ftpSessionProps.setProperty("user", "first");

StandardEnvironment env = new StandardEnvironment();
env.getPropertySources().addLast(new PropertiesPropertySource("pops", ftpSessionProps));
ctx.setEnvironment(env);
ctx.setConfigLocation("classpath:main.xml"); // set the config here
ctx.refresh();
ctx.start();

关于java - 在java中的bean中插入${xxx}的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37997056/

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