2010-04-12 6 views
1

나는 을 잠시 동안 IOC로 사용하고 있습니다. 또한 콩에 속성을 주입하는 아주 좋은 방법이 있습니다.자바 응용 프로그램의 속성 프레임 워크

이제 IOC가 Guice 인 새 프로젝트에 참여하고 있습니다. Guice를 사용하여 콩에 속성을 주입하는 방법을 완전히 이해하지 못합니다.

질문 : 실제로 guice beans에 원시 속성 (문자열, int)을 주입 할 수 있습니까? 대답이 '아니오'일 경우 Java 용 좋은 Properties Framework를 알고있을 수도 있습니다. 지금은 앱에서 간단한 속성 관리를 위해 ResourceBundle 클래스를 사용하고 싶었 기 때문에. 그러나 잠시 동안 봄을 사용한 후에 이것은 단지 나를 위해 심각하게 충분 해 보이지 않습니다.

답변

1

Guice의 속성을 주입하는 것은 쉽습니다. 파일에서 일부 속성을 읽은 후에는 Names.bindProperties(Binder,Properties)을 사용하여 바인딩합니다. 그런 다음 예를 들어 @Named("some.port") int port을 사용하여 주입 할 수 있습니다.

2

this SO post은 다양한 구성 프레임 워크의 사용과 속성의 사용에 대해서도 설명합니다. 나는 그것이 당신의 요구에 정확하게 부합하는지 모르겠지만 아마도 당신은 가치있는 것을 찾을 수있을 것입니다.

2

스프링은 XML 파일에있는 구성 정보를 주입 할 수 있습니다. 필자는 내 소프트웨어를 설치하는 사람들이 XML 파일을 편집해야하는 것을 원치 않으므로 일반 텍스트 파일 (예 : 경로 정보)의 구성 정보에 대해 java.util.Properties 사용하기 쉽고 스프링에 잘 들어 맞으므로 ClassPathResource를 사용하면 파일 자체의 경로가없는 위치가 허용됩니다 (클래스 패스에 있어야 함). WEB-INF/classes의 루트에 광산을 넣습니다. .

여기에 채워진 속성 개체를 반환하는 빠른 방법입니다 : 파일 자체가 정상적인 "이름 = 값"을 사용

/** 
* Load the Properties based on the property file specified 
* by <tt>filename</tt>, which must exist on the classpath 
* (e.g., "myapp-config.properties"). 
*/ 
public Properties loadPropertiesFromClassPath(String filename) 
     throws IOException 
{ 
    Properties properties = new Properties(); 
    if (filename != null) { 
     Resource rsrc = new ClassPathResource(filename); 
     log.info("loading properties from filename " + rsrc.getFilename()); 
     InputStream in = rsrc.getInputStream(); 
     log.info(properties.size() + " properties prior to load"); 
     properties.load(in); 
     log.info(properties.size() + " properties after load");   
    } 
    return properties; 
} 

일반 텍스트 형식을하지만 속성 'XML 형식을 사용하려면 단지 속성을 변경 .load (InputStream) t loadFromXML (InputStream). 도움이 되길 바랍니다.

+0

나는 내 질문에 대한 생각을 잘못 이해했다고 생각하지만 코드와 대답에 감사드립니다. – Roman

관련 문제