一. 前言
日常我們做項目中,我們經常會遇到這樣的情況:由於開發環境和生產環境的不同,項目部署在生產環境之前,有些參數我們並不知道如何取值。例如:數據庫鏈接設定,我們在部署生產環境之前,無法預知客戶的數據庫連接地址是什么,也無法預知數據庫的用戶名和密碼。這種情況下,就需要我們將數據庫的連接參數保存到某個文件中,項目需要鏈接數據庫的時候,就從該文件中獲取相關參數,以保證系統在生產環境中的正常運轉。
為了解決這種問題,我們就需要用到JAVA的properties文件。
二. 介紹
JAVA的配置文件是以properties為擴展名的,其內容為鍵值對形式存儲,且鍵名和鍵值都是字符串格式。JAVA提供java.util.Properties類,可以非常方便的讀取配置文件的信息。
三. 使用
1. 新建JAVA工程。
2. 新建properties文件,名稱為application.properties。
SQL.url=jdbc:sqlserver://127.0.0.1; DatabaseName=BaseFrame
SQL.userName=sa
SQL.passWord=-+
其中,SQL.url定義了數據庫的鏈接地址;SQL.userName定義了用戶名;SQL.passWord定義了密碼。
3. 新建Main.class並為其添加main方法。
package com.luych.stu;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Properties;
public class Main {
public static void main(String[] args) throws Exception {
// 將配置文件加載到流中
InputStream in = Main.class.getClassLoader().getResourceAsStream("application.properties");
// 創建並加載配置文件
Properties pro = new Properties();
pro.load(in);
// 獲取配置文件定義的值
String url = pro.getProperty("SQL.url");
System.out.println("配置文件中SQL.url的值為:"+url);
String userName = pro.getProperty("SQL.userName");
System.out.println("配置文件中SQL.userName的值為:"+userName);
String passWord = pro.getProperty("SQL.passWord");
System.out.println("配置文件中SQL.passWord的值為:"+passWord);
// 使用
Connection con = DriverManager.getConnection(url, userName, passWord);
String sql = "select * from tbUser";
PreparedStatement pstmt = con.prepareStatement(sql);
ResultSet result = pstmt.executeQuery();
int col = result.getMetaData().getColumnCount();
System.out.println("============================");
while (result.next()) {
for (int i = 1; i <= col; i++) {
System.out.print(result.getString(i) + "\t");
if ((i == 2) && (result.getString(i).length() < 8)) {
System.out.print("\t");
}
}
System.out.println("");
}
System.out.println("============================");
}
}
package com.luych.stu; import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.Properties; public class Main { public static void main(String[] args) throws Exception { // 將配置文件加載到流中 InputStream in = Main.class.getClassLoader().getResourceAsStream("application.properties"); // 創建並加載配置文件 Properties pro = new Properties(); pro.load(in); // 獲取配置文件定義的值 String url = pro.getProperty("SQL.url"); System.out.println("配置文件中SQL.url的值為:"+url); String userName = pro.getProperty("SQL.userName"); System.out.println("配置文件中SQL.userName的值為:"+userName); String passWord = pro.getProperty("SQL.passWord"); System.out.println("配置文件中SQL.passWord的值為:"+passWord); // 使用 Connection con = DriverManager.getConnection(url, userName, passWord); String sql = "select * from tbUser"; PreparedStatement pstmt = con.prepareStatement(sql); ResultSet result = pstmt.executeQuery(); int col = result.getMetaData().getColumnCount(); System.out.println("============================"); while (result.next()) { for (int i = 1; i <= col; i++) { System.out.print(result.getString(i) + "\t"); if ((i == 2) && (result.getString(i).length() < 8)) { System.out.print("\t"); } } System.out.println(""); } System.out.println("============================"); } }
打印結果為:
配置文件中SQL.url的值為:jdbc:sqlserver://127.0.0.1; DatabaseName=BaseFrame 配置文件中SQL.userName的值為:sa 配置文件中SQL.passWord的值為:-+ ============================ 705244A7-B642-4161-9EC8-966044F15F16 admin 系統管理員 123 15295699492 123@abc.com 4FE0FF3F-B015-482D-AB71-3321D57A7EF4 test1 Test1 123 15295699492 123@abc.com ============================
如此,我們就可以將配置文件中的值讀取並使用了。
四. 目錄結構
五. 總結
其實大家可能會想到:我直接將url、userName、passWord定義final變量中不就可以了嘛?這樣的缺點是我們在將項目部署到生產環境之前,還需要重新調整我們的JAVA代碼,並編譯生成war包或jar包。而定義到環境變量中則不需要重新編譯即可正常運行。

