65.9K
CodeProject 正在变化。 阅读更多。
Home

使用单例模式的 Java Properties 示例

starIconstarIconstarIconemptyStarIconemptyStarIcon

3.00/5 (2投票s)

2011 年 5 月 1 日

CPOL
viewsIcon

59049

本文介绍了如何在 Java 中使用单例模式来使用属性。

引言

在 Java 应用程序中,静态数据/信息可以在整个应用程序中使用。 像我这样的许多“初学者”开发者喜欢将硬编码信息直接写入代码,这对于任何项目来说都非常危险,特别是针对特定客户的应用程序。 为了防止不必要的灾难,我们可以使用 Java properties 来存储静态信息,并结合单例模式。 在这里,我尝试使用 Java properties 和单例模式来配置数据库信息,以便在整个应用程序中使用。

Using the Code

首先,我们应该创建一个名为 db.properties 的文件,并将数据库信息存储如下:

# Static information
IP 000.000.0.00
PORT 1433
DATABASE test2
USER test2
PASS test-2
DRIVERNAME com.microsoft.sqlserver.jdbc.SQLServerDriver
JDBC jdbc:sqlserver
INSTANCE SQLEXPRESS

现在,我们可以使用这个文件在单例模式中进行应用:

import java.io.*;
import java.util.Properties;
	 
public class DBInfo {
    static private DBInfo _instance = null;
    static public String port = null;
    static public String database = null;
    static public String ip = null;
    static public String user = null;
    static public String pass = null;
    static public String jdbc = null;
    static public String driver = null;
    static public String instance = null;
	 
    protected DBInfo(){
    try{
        InputStream file = new FileInputStream(new File("db.properties")) ;
        Properties props = new Properties();
        props.load(file);
        port = props.getProperty("PORT");
        ip = props.getProperty("IP");
        database = props.getProperty("DATABASE");
        user = props.getProperty("USER");
        pass = props.getProperty("PASS");
        jdbc = props.getProperty("JDBC");
        driver = props.getProperty("DRIVERNAME");
        instance = props.getProperty("INSTANCE");
       } 
    catch(Exception e){
        System.out.println("error" + e);
       }	 
    }
	 
    static public DBInfo instance(){
        if (_instance == null) {
            _instance = new DBInfo();
        }
        return _instance;
    }
}

现在,我们可以在应用程序中使用它:

DBInfo dbInfo = DBInfo.instance();
String connString = dbInfo.jdbc + "://" + dbInfo.ip + "\\" + dbInfo.instance +":" + 
dbInfo.port + "; databaseName=" + dbInfo.database + "; userName=" + 
dbInfo.user +"; passWord="+ dbInfo.pass +";";

如果客户想要更改 IP 地址、数据库端口或其他信息,他们只需要修改 db.properties 文件即可。

© . All rights reserved.