目录
- 引言
- 使用
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 等。每种方式都有其适用的场景和优缺点。选择合适的方式取决于你的项目需求和技术栈。希望这些示例能够帮助你在实际项目中更好地管理和使用配置文件。