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