ITEEDU

Java Gossip: 使用 Properties

连接数据库 中的程序为例,如下:

DBConnectionDemo.java
package onlyfun.caterpillar;

import java.sql.*; 

public class DBConnectionDemo { 
public static void main(String[] args) { 
String driver = "com.mysql.jdbc.Driver"; 
String url = "jdbc:mysql://localhost:3306/GUESTBOOK"; 
String user = "caterpillar"; 
String password = "123456"; 
try { 
Class.forName(driver); 
Connection conn = 
DriverManager.getConnection(url, 
user, password);

if(conn != null && !conn.isClosed()) {
System.out.println("数据库联机测试成功!"); 
conn.close();
}

} 
catch(ClassNotFoundException e) { 
System.out.println("找不到驱动程序类别"); 
e.printStackTrace(); 
} 
catch(SQLException e) { 
e.printStackTrace(); 
} 
} 
} 

其中的driver、url、user与password等设定,我们并不用撰写在程序之中,而可以将之撰写在一个.properties档案中,例如:

connection.properties
xdriver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/GUESTBOOK
user=caterpillar
password=123456

=左边设定的是key,右边是value,我们可以使用java.util.Properties来读取这个属性设定文件,根据key来取得value,例如:

DBConnectionDemo.java
package onlyfun.caterpillar;
import java.util.Properties;
import java.sql.*;
public class DBConnectionDemo {
	private static Properties props;
	private static void loadProperties() {
		props = new Properties();
		try {
			props.load(new FileInputStream("config.properties"));
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	private static String getConfig(String key) {
		return props.getProperty(key);
	}
	public static void main(String[] args) {
		loadProperties();
		String driver = getConfig("driver");
		String url = getConfig("url");?
		String user = getConfig("user");?
		String password = getConfig("password");
		try {
			Class.forName(driver);
			Connection conn =
			DriverManager.getConnection(url,
			user, password);
			if(conn != null && !conn.isClosed()) {
				System.out.println("数据库联机测试成功!");
				conn.close();
			}
		}
		catch(ClassNotFoundException e) {
			System.out.println("找不到驱动程序类别");
			e.printStackTrace();
		}
		catch(SQLException e) {
			e.printStackTrace();
		}
	}
}

如此一来,将来若想改变属性设定,则直接修改.properties档案的内容即可,而不用修改原始码再重新编译。