Java 使用配置文件链接数据库

在Java开发中,数据库是不可或缺的一部分。然而,直接在代码中硬编码数据库连接信息(如URL、用户名、密码等)存在安全隐患和灵活性问题。为了解决这些问题,我们可以使用配置文件来管理数据库连接信息。本文将介绍如何使用Java通过配置文件链接数据库,并通过代码示例进行说明。

配置文件概述

配置文件是一个存储应用程序配置信息的文件,通常以文本形式存在。在Java中,常用的配置文件格式有.properties.xml.properties文件使用键值对的方式存储配置信息,而.xml文件则使用XML标签来组织数据。

使用.properties文件

1. 创建配置文件

首先,我们需要创建一个.properties文件,例如dbconfig.properties,并在其中添加数据库连接信息:

db.url=jdbc:mysql://localhost:3306/mydb
db.user=root
db.password=123456

2. 读取配置文件

接下来,我们使用Java代码读取这个配置文件:

import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;

public class ConfigLoader {
    private Properties properties;

    public ConfigLoader(String fileName) {
        properties = new Properties();
        try (FileInputStream fis = new FileInputStream(fileName)) {
            properties.load(fis);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public String getProperty(String key) {
        return properties.getProperty(key);
    }
}

3. 使用配置信息连接数据库

最后,我们使用读取到的配置信息来连接数据库:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DatabaseConnector {
    private String url;
    private String user;
    private String password;

    public DatabaseConnector(ConfigLoader config) {
        url = config.getProperty("db.url");
        user = config.getProperty("db.user");
        password = config.getProperty("db.password");
    }

    public Connection connect() throws SQLException {
        return DriverManager.getConnection(url, user, password);
    }
}

使用.xml文件

1. 创建配置文件

.properties文件不同,.xml文件使用XML标签来组织数据。例如,我们可以创建一个名为dbconfig.xml的文件:

<?xml version="1.0" encoding="UTF-8"?>
<database-config>
    <url>jdbc:mysql://localhost:3306/mydb</url>
    <user>root</user>
    <password>123456</password>
</database-config>

2. 读取配置文件

读取.xml配置文件需要使用XML解析器,例如DOM解析器:

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.File;

public class XmlConfigLoader {
    private String url;
    private String user;
    private String password;

    public XmlConfigLoader(String fileName) {
        try {
            File file = new File(fileName);
            DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
            Document doc = dBuilder.parse(file);
            doc.getDocumentElement().normalize();

            NodeList nList = doc.getElementsByTagName("url");
            Node urlNode = nList.item(0);
            url = urlNode.getTextContent();

            nList = doc.getElementsByTagName("user");
            Node userNode = nList.item(0);
            user = userNode.getTextContent();

            nList = doc.getElementsByTagName("password");
            Node passwordNode = nList.item(0);
            password = passwordNode.getTextContent();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public String getUrl() {
        return url;
    }

    public String getUser() {
        return user;
    }

    public String getPassword() {
        return password;
    }
}

3. 使用配置信息连接数据库

连接数据库的代码与使用.properties文件时相同,只需将ConfigLoader替换为XmlConfigLoader

序列图

以下是使用配置文件连接数据库的序列图:

sequenceDiagram
    participant User
    participant ConfigLoader
    participant DatabaseConnector
    participant Database

    User->>ConfigLoader: Load configuration
    ConfigLoader->>DatabaseConnector: Provide configuration
    DatabaseConnector->>Database: Connect using configuration
    Database-->>DatabaseConnector: Connection established
    DatabaseConnector-->>ConfigLoader: Connection successful
    ConfigLoader-->>DatabaseConnector: Close connection
    DatabaseConnector-->>Database: Close connection