目录
引言
使用 ResourceBundle 读取配置文件
使用 Properties 读取配置文件并创建 DataSource
3.1 从文件系统读取配置文件
3.2 从类路径读取配置文件
使用 ConfigurableApplicationContext 读取 Spring 配置文件
使用 YamlPropertiesFactoryBean 读取 YAML 配置文件
使用 HikariCP 配置文件读取
使用 Apache Commons Configuration 读取配置文件
总结
1. 引言
在现代应用程序中,配置文件是管理和配置应用程序行为的重要组成部分。Java 提供了多种方式来读取配置文件,包括使用 ResourceBundle、Properties、Spring 框架、YAML 文件、HikariCP 连接池以及 Apache Commons Configuration 等。本文将详细介绍这些方式,并通过示例代码展示如何读取配置文件并创建 DataSource。
2. 使用 ResourceBundle 读取配置文件
ResourceBundle 是 Java 提供的一个用于读取属性文件的类。它可以从类路径中读取属性文件,并将其内容加载到 ResourceBundle 对象中。
import java.util.ResourceBundle;
import java.sql.DriverManager;
import java.sql.Connection;
public class ResourceBundleExample {
public static void main(String[] args) throws Exception {
// 使用 ResourceBundle 读取配置文件
ResourceBundle druidBundle = ResourceBundle.getBundle("druid");
// 获取配置文件中的属性值
String className = druidBundle.getString("druid.driverClassName");
String url = druidBundle.getString("druid.url");
String userName = druidBundle.getString("druid.username");
String passWord = druidBundle.getString("druid.password");
// 使用 DriverManager 获取数据库连接
Connection connection = DriverManager.getConnection(url, userName, passWord);
// 使用 connection 进行数据库操作
connection.close();
}
}
3. 使用 Properties 读取配置文件并创建 DataSource
Properties 是 Java 提供的一个用于读取属性文件的类。它可以从文件系统或类路径中读取属性文件,并将其内容加载到 Properties 对象中。
3.1 从文件系统读取配置文件
import java.util.Properties;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.nio.charset.Charset;
import javax.sql.DataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import java.sql.Connection;
public class PropertiesFileExample {
public static void main(String[] args) throws Exception {
// 创建 Properties 对象
Properties properties = new Properties();
// 从文件系统读取配置文件
properties.load(new InputStreamReader(new FileInputStream("src\\main\\resources\\druid.properties"), Charset.forName("UTF-8")));
// 使用 DruidDataSourceFactory 创建 DataSource
DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);
// 获取数据库连接
Connection connection = dataSource.getConnection();
// 使用 connection 进行数据库操作
connection.close();
}
}
3.2 从类路径读取配置文件
import java.util.Properties;
import javax.sql.DataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import java.sql.Connection;
public class PropertiesClasspathExample {
public static void main(String[] args) throws Exception {
// 创建 Properties 对象
Properties properties = new Properties();
// 从类路径读取配置文件
properties.load(App.class.getClassLoader().getResourceAsStream("druid.properties"));
// 使用 DruidDataSourceFactory 创建 DataSource
DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);
// 获取数据库连接
Connection connection = dataSource.getConnection();
// 使用 connection 进行数据库操作
connection.close();
}
}
4. 使用 ConfigurableApplicationContext 读取 Spring 配置文件
如果你使用 Spring 框架,可以通过 ConfigurableApplicationContext 读取配置文件并创建 DataSource。
import org.springframework.context.support.ClassPathXmlApplicationContext;
import javax.sql.DataSource;
import java.sql.Connection;
public class SpringConfigExample {
public static void main(String[] args) throws Exception {
// 使用 Spring 的 ClassPathXmlApplicationContext 读取配置文件
ConfigurableApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
// 获取 DataSource Bean
DataSource dataSource = context.getBean(DataSource.class);
// 获取数据库连接
Connection connection = dataSource.getConnection();
// 使用 connection 进行数据库操作
connection.close();
// 关闭 Spring 上下文
context.close();
}
}
5. 使用 YamlPropertiesFactoryBean 读取 YAML 配置文件
如果你使用的是 YAML 格式的配置文件,可以通过 YamlPropertiesFactoryBean 读取配置文件并创建 DataSource。
import org.springframework.beans.factory.config.YamlPropertiesFactoryBean;
import org.springframework.core.io.ClassPathResource;
import java.util.Properties;
import javax.sql.DataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import java.sql.Connection;
public class YamlConfigExample {
public static void main(String[] args) throws Exception {
// 创建 YamlPropertiesFactoryBean 对象
YamlPropertiesFactoryBean yaml = new YamlPropertiesFactoryBean();
// 设置 YAML 配置文件路径
yaml.setResources(new ClassPathResource("druid.yml"));
// 获取 Properties 对象
Properties properties = yaml.getObject();
// 使用 DruidDataSourceFactory 创建 DataSource
DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);
// 获取数据库连接
Connection connection = dataSource.getConnection();
// 使用 connection 进行数据库操作
connection.close();
}
}
6. 使用 HikariCP 配置文件读取
如果你使用的是 HikariCP 连接池,可以通过 HikariConfig 读取配置文件并创建 DataSource。
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
public class HikariConfigExample {
public static void main(String[] args) throws Exception {
// 创建 HikariConfig 对象并读取配置文件
HikariConfig config = new HikariConfig("src/main/resources/hikari.properties");
// 使用 HikariConfig 创建 DataSource
DataSource dataSource = new HikariDataSource(config);
// 获取数据库连接
Connection connection = dataSource.getConnection();
// 使用 connection 进行数据库操作
connection.close();
}
}
7. 使用 Apache Commons Configuration 读取配置文件
Apache Commons Configuration 是一个强大的配置文件读取工具,支持多种配置文件格式。
import org.apache.commons.configuration2.Configuration;
import org.apache.commons.configuration2.builder.fluent.Configurations;
import org.apache.commons.configuration2.ex.ConfigurationException;
import java.util.Properties;
import javax.sql.DataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import java.sql.Connection;
public class CommonsConfigExample {
public static void main(String[] args) throws Exception {
// 创建 Configurations 对象
Configurations configs = new Configurations();
try {
// 读取配置文件
Configuration config = configs.properties("src/main/resources/druid.properties");
// 将配置文件内容加载到 Properties 对象中
Properties properties = new Properties();
properties.putAll(config.getMap());
// 使用 DruidDataSourceFactory 创建 DataSource
DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);
// 获取数据库连接
Connection connection = dataSource.getConnection();
// 使用 connection 进行数据库操作
connection.close();
} catch (ConfigurationException e) {
e.printStackTrace();
}
}
}
8. 总结
本文介绍了多种读取配置文件并创建 DataSource 的方式,包括使用 ResourceBundle、Properties、Spring 框架、YAML 文件、HikariCP 连接池以及 Apache Commons Configuration 等。每种方式都有其适用的场景和优缺点。选择合适的方式取决于你的项目需求和技术栈。希望这些示例能够帮助你在实际项目中更好地管理和使用配置文件。