configuration.xml:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<header>
<result forceReloadCheck="true"></result>
</header>

<override>
<system />
<properties fileName="${user.home}/users.properties">
<reloadingStrategy config-class="org.apache.commons.configuration.reloading.FileChangedReloadingStrategy"
refreshDelay="1000" />
</properties>
<xml fileName="hibernate.cfg.xml" />
</override>
</configuration>
users.properties
a.b=sss
a.a=${sys:user.dir}-${a.b}
hibernate.cfg.xml
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>

<session-factory>
<property name="connection.username">aName</property>
<property name="connection.url">
jdbc:oracle:thin:@192.168.0.123:1521:ora123
</property>
<property name="dialect">
org.hibernate.dialect.Oracle9Dialect
</property>
<property name="myeclipse.connection.profile">
oracle.jdbc.driver.OracleDriver
</property>
<property name="connection.password">pass</property>
<property name="connection.driver_class">
oracle.jdbc.driver.OracleDriver
</property>
<mapping resource="test/TABLE_ONE.hbm.xml" />

</session-factory>

</hibernate-configuration>
Test.java
ConfigurationBuilder factory = new DefaultConfigurationBuilder("bin/configuration.xml");
Configuration config = factory.getConfiguration();
System.out.println(config.getClass());
for (int i = 0; i < 50; i++) {
//System.out.println(rs.reloadingRequired());
System.out.println(config.getString("a.a"));
Thread.sleep(1000);
}
System.out.println(config.getString("a.a"));
System.out.println(config.getString("a.b"));
System.out.println(config.getString("session-factory.mapping[@resource]"));
System.out.println(config.getString("session-factory.property(0)[@name]"));
System.out.println(config.getString("session-factory.property(1)"));
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<header>
<result forceReloadCheck="true"></result>
</header>
<override>
<system />
<properties fileName="${user.home}/users.properties">
<reloadingStrategy config-class="org.apache.commons.configuration.reloading.FileChangedReloadingStrategy"
refreshDelay="1000" />
</properties>
<xml fileName="hibernate.cfg.xml" />
</override>
</configuration>users.properties
a.b=sss
a.a=${sys:user.dir}-${a.b}hibernate.cfg.xml
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>
<session-factory>
<property name="connection.username">aName</property>
<property name="connection.url">
jdbc:oracle:thin:@192.168.0.123:1521:ora123
</property>
<property name="dialect">
org.hibernate.dialect.Oracle9Dialect
</property>
<property name="myeclipse.connection.profile">
oracle.jdbc.driver.OracleDriver
</property>
<property name="connection.password">pass</property>
<property name="connection.driver_class">
oracle.jdbc.driver.OracleDriver
</property>
<mapping resource="test/TABLE_ONE.hbm.xml" />
</session-factory>
</hibernate-configuration>Test.java
ConfigurationBuilder factory = new DefaultConfigurationBuilder("bin/configuration.xml");
Configuration config = factory.getConfiguration();
System.out.println(config.getClass());
for (int i = 0; i < 50; i++) {
//System.out.println(rs.reloadingRequired());
System.out.println(config.getString("a.a"));
Thread.sleep(1000);
}System.out.println(config.getString("a.a"));
System.out.println(config.getString("a.b"));
System.out.println(config.getString("session-factory.mapping[@resource]"));
System.out.println(config.getString("session-factory.property(0)[@name]"));
System.out.println(config.getString("session-factory.property(1)"));

配置文件动态加载与解析
本文介绍了一种通过配置文件实现动态参数加载的方法,并展示了如何使用特定的Java类来读取和解析配置文件中的属性。此外,还演示了如何设置配置文件的重新加载策略以实时更新应用程序中的设置。
1万+

被折叠的 条评论
为什么被折叠?



