ApplicationContext.xml 不更新目标的环境变量
ApplicationContext.xml does not update env variables at target
这是我的 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
的文件中定义
我需要在 parent pom.xml 中进行哪些更改以 convert the env variable at 目标运行时间
能否请您帮忙或给我一个适当的建议或 link 可以让我在运行时获得数据库属性的名称。
例如
database.driverName
应更新为 jdbcDriver
@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));
}
}
每五秒更新一次。
因为我的项目必须有相应的 .properties
文件,而我的 parent pom.xml 只使用 .properties 文件。它无法获取其他 .properties 文件。我的变量没有在运行时更新的原因。我维护了一个 common.properties
文件并在 pom.xml
中添加了路径
现在我得到了想要的结果
这是我的 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
的文件中定义我需要在 parent pom.xml 中进行哪些更改以 convert the env variable at 目标运行时间
能否请您帮忙或给我一个适当的建议或 link 可以让我在运行时获得数据库属性的名称。
例如
database.driverName
应更新为 jdbcDriver
@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));
}
}
每五秒更新一次。
因为我的项目必须有相应的 .properties
文件,而我的 parent pom.xml 只使用 .properties 文件。它无法获取其他 .properties 文件。我的变量没有在运行时更新的原因。我维护了一个 common.properties
文件并在 pom.xml
现在我得到了想要的结果