首页 > 编程语言 >Java 配置文件读取指南:多种方式解析与应用

Java 配置文件读取指南:多种方式解析与应用

时间:2024-12-09 19:10:42浏览次数:4  
标签:Java 读取 配置文件 connection DataSource import Properties

目录

  1. 引言
  2. 使用 ResourceBundle 读取配置文件
  3. 使用 Properties 读取配置文件并创建 DataSource
    • 3.1 从文件系统读取配置文件
    • 3.2 从类路径读取配置文件
  4. 使用 ConfigurableApplicationContext 读取 Spring 配置文件
  5. 使用 YamlPropertiesFactoryBean 读取 YAML 配置文件
  6. 使用 HikariCP 配置文件读取
  7. 使用 Apache Commons Configuration 读取配置文件
  8. 总结

1. 引言

在现代应用程序中,配置文件是管理和配置应用程序行为的重要组成部分。Java 提供了多种方式来读取配置文件,包括使用 ResourceBundleProperties、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 的方式,包括使用 ResourceBundleProperties、Spring 框架、YAML 文件、HikariCP 连接池以及 Apache Commons Configuration 等。每种方式都有其适用的场景和优缺点。选择合适的方式取决于你的项目需求和技术栈。希望这些示例能够帮助你在实际项目中更好地管理和使用配置文件。

标签:Java,读取,配置文件,connection,DataSource,import,Properties
From: https://www.cnblogs.com/itcq1024/p/18595841

相关文章

  • JS-4 JavaScript 引入到文件
    JavaScript常用引入方式:嵌入到HTML文件中、引入本地独立JS文件、引入网络来源文件1、嵌入到HTML文件中<body>  <script>    varage=20;    console.log(age);  </script></body> 2、引入本地独立JS文件<body>  <scriptsrc=".......
  • 策略模式-java实战
    策略模式(StrategyPattern)是一种行为型模式。它定义了一系列算法,并将每一个算法封装起来,使它们可以互换使用,算法的变化不会影响使用算法的用户。使用场景当一个系统中有许多类,它们之间的区别仅在于它们的行为时。存在多种相似算法,使用条件语句(如if...else、switch...case)维护逻......
  • JavaScript 基础语法入门
    JavaScript是一种运行在浏览器中的编程语言,适合初学者快速上手。以下内容是JavaScript的基础语法介绍。1.JavaScript的引入方式内嵌式在HTML文件中,通过<script>console.log("Hello,JavaScript!");</script>外部文件引入将JavaScript写入独立的文......
  • 《Java核心技术I》映射条目的原子更新
    映射条目的原子更新ConcurrentHashMap只有部分原子更新。JavaAPI提供了一些新方法,例如:compute方法可以提供一个键和一个计算新值的函数。map.compute(word,(k,v)->v==null?1:v+1)注释:ConcurrentHashMap中不允许有null值。很多方法都使用null来指示映射中某个给定的键......
  • Java基础 —— 集合(二)
    Collection接口Collection接口常用方法booleanadd(Ee):在集合末尾添加元素booleanremove(Objecto):若集合中存在与o相同的元素,则删除,然后返回truevoidclear():清空集合内的所有元素booleancontains(Objecto):判断集合中是否存在该元素booleanisEmpty():判断集合是否为空......
  • JS-2 JavaScript语句、标识符
    1、语句JavaScript程序的单位是行(line),也就是一行一行地执行。一般情况下,每一行就是一个语句varnum=10;语句以分号结尾,一个分号就表示一个语句结束。 在html中用script写css 2、标识符标识符(identifier)指的是用来识别各种值的合法名称。最常见的标识符......
  • Java 的 SPI 都不了解?这很难让你通过
    引言今天和大家分享一下一个在 Java 开发中非常重要的概念—— SPI(ServiceProviderInterface)。SPI 直译叫做服务提供者接口,是一种用于动态加载服务的机制。它不仅能够帮助我们构建更加灵活和可扩展的应用程序,还能让我们的代码更加简洁和易于维护。希望通过本文,大家能够对 ......
  • nginx日志配置文件说明
    nginx日志共三个参数。access_log:定义日志的路径及格式。log_format:定义日志的模板。open_log_file_cache:定义日志文件缓存。nginxaccess日志配置access_log日志配置access_log用来定义日志级别,日志位置。语法如下:日志级别: debug>info>notice>warn>error>......
  • Java基础 —— 集合(一)
    集合(一)数组和集合的区别数组是固定长度的数据结构,而集合是动态的数据结构数组可以包含基本数据类型和对象,集合只能包含对象数组只能存放同一类型的数据,而集合可以蹲房不同类型的数组可以直接访问元素,集合需要通过迭代器或其他方法访问元素集合的分类 根据上图......
  • c#通过串口读取到的分段json提取方法
    privateList<byte>receivedBuffer=newList<byte>();privatevoidbtnConnect_Click(objectsender,EventArgse){this.btnConnect.Enabled=false;this.btnDisconnect.Enabled=true;_deviceAdapter=newComDeviceAdapter(this......