我的项目有两个xml文件。第一个文件刚加载,一些bean被实例化,调用一些方法给我一个用户名和密码。必须将此用户名和密码发送到第二个xml文件,该文件中配置了异步侦听器。加载上下文后,侦听器就会启动。我想在加载之前将我拥有的用户名和密码传递给这个xml。
答案 0 :(得分:4)
您可以使用PropertyPlaceholderConfigurer实现此目的。 假设,首先加载springConfigXml1.xml(其中包含以下方法的bean),然后执行setNamePassword方法,然后加载springConfigXml2.xml(具有AsyncListenerClass):
public void setNamePassword(){
//some code
PropertyPlaceholderConfigurer configurer = new PropertyPlaceholderConfigurer();
Properties properties = new Properties();
properties.setProperty("property.userName", "username");
properties.setProperty("property.password", "password");
configurer.setProperties(properties);
//Include below line if you have another
//PropertyPlaceholderConfigurer in springConfigXml2.xml
configurer.setIgnoreUnresolvablePlaceholders(true);
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext();
context.addBeanFactoryPostProcessor(configurer);
context.setConfigLocation("springConfigXml2.xml");
context.refresh();
//some code
}
springConfigXml2.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"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="asyncListener" class="com.example.AsyncListenerClass">
<property name="userName" value="${property.userName}"/>
<property name="password" value="${property.password}"/>
</bean>
</beans>
但是,将为上下文生命设置用户名和密码。