将 JDBC 数据源配置设置为 XML

Setting JDBC dataource configurations into an XML

我正在使用 c3p0 作为我的 JDBC 数据源,我想知道是否有办法将所有连接凭据抽象到 XML 配置文件中,而不是将其放在我的 java class?

比如我现在的是:

ComboPooledDataSource cpds = new ComboPooledDataSource();
cpds.setDriverClass( "org.oracle.Driver" ); //loads the jdbc driver
cpds.setJdbcUrl( "jdbc:oracle://localhost/testdb" );
cpds.setUser("dbuser");
cpds.setPassword("dbpassword");

我想知道我是否可以将所有这些抽象成一个类似于 spring JDBC 的 XML 配置文件?


此外,处理具有不同连接凭据的多个不同数据库的最佳做法是什么?对于这些情况,我目前拥有的是条件 if 语句,因此如果您在 QA 环境中,则凭据是...,如果是 DEV 环境,则凭据是...等等。但是,我认为这不是很好的做法。我还可以将不同的数据库环境抽象到一个 XML 配置文件中吗?

I am wondering if there is a way to abstract all the connection credentials into an XML configuration file instead of placing it in my java class?

是的,您可以使用 Properties 对象的 XML 格式在 XML 文件中定义所有密钥,然后使用 Properties#loadFromXML(InputStream).

例如,这里您的 XML 文件可以是:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
    <entry key="driverClassName">org.oracle.Driver</entry>
    <entry key="jdbcUrl">jdbc:oracle://localhost/testdb</entry>
    <entry key="user">dbuser</entry>
    <entry key="password">dbpassword</entry>
</properties>

然后你将加载它如下:

Properties properties = new Properties();
try (InputStream is = new FileInputStream(file)){
    properties.loadFromXML(is);
}

从这里您可以使用方法 getProperty(key) or getProperty(key, defaultValue) 来访问不同键的值。