|
SSISO Community검색 |
|
SSISO Community메뉴 |
|
SSISO Community카페 |
|
블로그 카테고리 |
|
|
Synchronized로 검색한 결과 |
|
등록일:2008-03-10 16:07:22 작성자: 제목:프로퍼티 설정하기 |
|
작성자 : 장형화(hhjang97@venus.uos.ac.kr)
작성일 : 2004. 12. 30
수정일 :
2006. 03. 17 : TestProperty 소스 추가
2005. 01. 05 : 환경 변수 이용한 방법 추가
원본 :
설명 :
Property 파일에 프로그램에 사용하는 모든 변수를 설정한다.
환경마다 변화는 정보는 db.property 와 같이 파일을 만들고 사용하면 된다.
db.property 파일의 위치는 2개로 나눌수 있다.
1) Property.java 가 있는 디렉토리에 같이 있다.
2) 특정 위치에 있다.
1) 번의 경우 getClass().getResourceAsStream()을 이용해서 파일을 읽으면 되고
2) 번의 경우는 File 클래스를 이용하면 된다.
또한 JAVA 시스템 변수나 환경변수를 이용할 수도 있다.
* System.getProperty("user.dir")
* java -Dproperty.dir=%WS_HOME%/property com.PropertyTest
(WS_HOME은 시스템 환경변수임)
################################# ################################# #################################
사용 방법 :
// 서버 환경별 정보
Property p = new Property().getInstance();
System.out.println("driverUrl = " + p.driverUrl);
System.out.println("databaseUser = " + p.databaseUser);
System.out.println("databasePasswd = " + p.databasePasswd);
// 고정 정보
System.out.println("Default driverUrl = " + Property.driverUrl);
#################################
# Property.java
#################################
package com.portal.common;
import java.util.*;
import java.io.*;
public class Property {
public Property(){
}
// DB 연결
public static String driverClass="oracle.jdbc.OracleDriver";
public static String driverUrl="jdbc:oracle:thin:@111.222.333.444:1521:ORASID"; //
public static String databaseUser="UserID";
public static String databasePasswd="UserPasswd";
static private Property instance; // The single instance
static private String PROPERTY_FILE = "db.property";
static Synchronized public Property getInstance() {
if (instance == null) {
instance = new Property(PROPERTY_FILE);
}
return instance;
}
private Property(String propertyFile) {
try{
PROPERTY_FILE = propertyFile;
loadProperties();
}catch(Exception e) {}
}
public void loadProperties()
{
Properties props = new Properties();
try {
System.out.println("프로퍼티 정보를 로딩합니다.");
if (System.getProperty("property.dir") == null) {
System.out.println("=== Property.java 가 있는 디렉토리의 db.property Read ===");
propertyPath = PROPERTY_FILE;
InputStream is = getClass().getResourceAsStream(propertyPath);
props.load(is);
} else {
System.out.println("=== property.dir 디렉토리의 db.property Read ===");
propertyPath = System.getProperty("property.dir") + "/" + PROPERTY_FILE;
System.out.println("=== file read ===");
File propFile = new File(propertyPath);
FileInputStream is = new FileInputStream(propFile);
props.load(is);
}
System.out.println("Porperty Path : " + propertyPath);
this.driverClass = props.getProperty("DRIVERCLASS").trim();
this.driverUrl = props.getProperty("DRIVER").trim();
this.databaseUser = props.getProperty("USER").trim();
this.databasePasswd = props.getProperty("PASSWORD").trim();
}
catch (Exception e) {
System.err.println("Can't read the properties file. ");
return;
}
}
}
#################################
# db.property
#################################
DRIVER = jdbc:oracle:thin:@111.111.111.111:1521:ORA92
DRIVERCLASS = oracle.jdbc.OracleDriver
USER = User2
PASSWORD = Passwd2
#################################
# TestProperty
#################################
package test;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.Properties;
import common.util.PropertyFile;
public class TestProperty {
public static String STRING_VAL;
public static boolean BOOLEAN_VAL;
public static int INT_VAL = 10;
static private TestProperty instance; // The single instance
// static private String PROPERTY_FILE = "/properties/test.properties"; // 소스 내부
static private String PROPERTY_HOME = "D:/2006Work/Alert/properties";
static private String PROPERTY_FILE = "test.properties";
static Synchronized public TestProperty getInstance() {
if (instance == null) {
instance = new TestProperty();
}
return instance;
}
static Synchronized public TestProperty getInstance(String propertyFile) {
if (instance == null) {
PROPERTY_FILE = propertyFile;
instance = new TestProperty();
}
System.out.println(PROPERTY_FILE);
return instance;
}
/**
* A private constructor since this is a Singleton
*/
private TestProperty() {
try{
// loadProperties();
loadProperties2();
}catch(Exception e) {}
}
private void setPropertyHome() {
if (System.getProperty("property.dir") != null) {
PROPERTY_HOME = System.getProperty("property.dir");
}
}
// 소스 안의 Property load
private void loadProperties()
{
InputStream is = getClass().getResourceAsStream(PROPERTY_FILE);
Properties props = new Properties();
try {
System.out.println("소스안의 프로퍼티 정보를 로딩합니다. [ " + PROPERTY_FILE + " ] ");
props.load(is);
}
catch (Exception e) {
System.err.println("Can't read the properties file. [ " + PROPERTY_FILE + " ] ");
return;
}
load(props);
}
// 외부 파일을 읽는 경우..
private void loadProperties2 () {
PropertyFile props = null;
setPropertyHome();
String propertyPath = PROPERTY_HOME + "/" + PROPERTY_FILE;
try {
System.out.println("외부의 프로퍼티 정보를 로딩합니다. [ " + propertyPath + " ] ");
props = new PropertyFile(propertyPath);
}
catch (Exception e) {
System.err.println("Can't read the properties file. [ " + propertyPath + " ] ");
return;
}
load(props);
}
private void load(Properties props) {
TestProperty.STRING_VAL = props.getProperty("STRING_VAL", "String Test"); // 문자열
TestProperty.BOOLEAN_VAL = new Boolean(props.getProperty("BOOLEAN_VAL", "false")).booleanValue(); // boolean
TestProperty.INT_VAL = Integer.parseInt(props.getProperty("INT_VAL", "10")); // int
printInfo();
}
public static void printInfo() {
System.out.println("STRING_VAL = " + STRING_VAL);
System.out.println("BOOLEAN_VAL = " + BOOLEAN_VAL);
System.out.println("INT_VAL = " + INT_VAL);
}
/**
* @param args
*/
public static void main(String[] args) {
TestProperty.getInstance();
}
}
출처 : http://www.php.pe.kr/java_main/tnt/base/property.html |
|
|
|
|
|