2008-10-17 3 views

답변

16

웹 응용 프로그램의 경우 web.xml을 사용하여 응용 프로그램 설정을 저장할 수 있습니다.

이외의 경우 Properties 클래스를 사용하여 특성 파일을 읽고 쓸 수 있습니다.

시스템 및 사용자 기본 설정을 읽고 쓰는 데 사용되는 Preferences 클래스를 볼 수도 있습니다. 추상 클래스이지만 userNodeForPackage(ClassName.class)systemNodeForPackage(ClassName.class)을 사용하여 적절한 객체를 얻을 수 있습니다.

+0

첫 번째 옵션에 대한 추가 정보를 제공 할 수 있습니까? "web.xml을 사용하여 응용 프로그램 설정을 저장할 수 있습니까?" 응용 프로그램 설정을'context-param'으로 저장 하시겠습니까? 또는 다른 뭔가요? – theyuv

+0

web.xml에는 몇 가지 유형의 매개 변수를 넣을 수 있지만'context-param '을 사용했을 가능성이 큽니다. 그 이후로 7.5 년이되었으므로 기억이 안납니다. – Powerlord

2

간단히 말해서 모든 설정이 들어있는 속성 파일 (예 : myapp.properties) 만 있으면됩니다. 설정을하기위한 고급 방법은 아니지만 충분하거나 자체 XML 기반 설정을 가질 수 있습니다.

9

예제 코드에 Properties 클래스를 사용 Powerlord의 제안 (+1) @ 넣어 :와 파일 Configuration.cnf을 배치 컨테이너의 루트에,

public class SomeClass { 
    public static void main(String[] args){ 
     String dbUrl = ""; 
     String dbLogin = ""; 
     String dbPassword = "";  
     if (args.length<3) { 
      //If no inputs passed in, look for a configuration file 
      URL configFile = SomeClass.class.getClass().getResource("/Configuration.cnf"); 
      try { 
       InputStream configFileStream = configFile.openStream(); 
       Properties p = new Properties(); 
       p.load(configFileStream); 
       configFileStream.close(); 

       dbUrl  = (String)p.get("dbUrl"); 
       dbLogin = (String)p.get("dbUser"); 
       dbPassword = (String)p.get("dbPassword");    
      } catch (Exception e) { //IO or NullPointer exceptions possible in block above 
       System.out.println("Useful message"); 
       System.exit(1); 
      } 
     } else { 
      //Read required inputs from "args" 
      dbUrl  = args[0]; 
      dbLogin = args[1]; 
      dbPassword = args[2];   
     } 
     //Input checking one three items here 
     //Real work here. 
    } 
} 

다음 (jar 파일의 예를 들어 위) 다음 내용은 :

#Comments describing the file 
#more comments 
dbUser=username 
dbPassword=password 
dbUrl=jdbc\:mysql\://servername/databasename 

이 완벽하지 느낌을 내 현재의 필요 충분하지만 좋은 (I은 개선을 듣고 관심을 가질 것입니다).

+0

심각하게? 따라서 파일을 스트림 리더로 실행하면 설정을 가져올 수 있습니까? 여러 클래스의 경우에는 전체적으로 사용할 수있는 도우미 클래스와 같은 것이 필요합니까? 자바가 제공 할 수있는 최고의 솔루션입니까? 그냥 아주 순진한 것처럼 보입니다. – tom33pr

+0

이것은 내 필요에 따라 2013 년에 관리 할 수있는 최상의 방법입니다.보다 일반적인 솔루션이 일반적으로 애플리케이션 서버에 포함되어 있다고 생각합니다. "엔터프라이즈 자바 빈즈"라는 문구가 떠오르지 만, 나는 그 환경에서 개인적으로 일한 적이 없다. – Pursuit