这是我的ApplicationContext.xml代码
<bean class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" id="dataSource">
<property name="driverClassName" value="${database.driverClassName}" />
<property name="url" value="${database.url}" />
<property name="username" value="${database.username}" />
<property name="password" value="${database.password}" />
<property name="testOnBorrow" value="true" />
<property name="testOnReturn" value="true" />
<property name="testWhileIdle" value="true" />
<property name="timeBetweenEvictionRunsMillis" value="1800000" />
<property name="numTestsPerEvictionRun" value="3" />
<property name="minEvictableIdleTimeMillis" value="1800000" />
</bean>
我的属性在名为 database.properties
的文件中定义我需要在父pom.xml 中进行哪些更改,以在目标运行时 转换环境变量。
您能帮忙还是给我一个适当的建议或链接,它可以使我在运行时获得数据库属性的名称。
例如
database.driverName
应该更新为jdbcDriver
答案 0 :(得分:1)
@Component
public class PropertyReloader {
@Autowired
private StandardEnvironment env;
@Scheduled(fixedRate=5000)
public void reloadProperties() throws IOException {
MutablePropertySources ps = env.getPropertySources();
Properties pr = new Properties();
InputStream inputStream = getClass().getResourceAsStream("/ApplicationContext.xml");
pr.load(inputStream);
inputStream.close();
pr.replace("class path resource [ApplicationContext.xml]", new PropertiesPropertySource("class path resource [ApplicationContext.xml]", pr));
}
}
这将每五秒钟更新一次。
答案 1 :(得分:0)
由于我的项目必须使用各自的.properties
文件,而我的父pom.xml仅使用.properties文件。它无法获取其他.properties文件。我的变量未在运行时更新的原因。我维护了一个common.properties
文件,并将路径添加到pom.xml
现在我得到了预期的结果