2010-06-18 2 views
42

아무도 Google Guice를 사용하여 .properties 파일의 속성을 주입하는 방법에 대한 예가 없습니다. Guice는 인젝터가 시동 될 때 필요한 모든 특성이 존재한다는 것을 확인할 수 있었다고 들었습니다.Guice 및 속성 파일

저는 현재 guice 위키에서이 사실을 발견 할 수 없습니다.

답변

67

당신은 getPropertiesProperties 객체 또는 (속성이 Properties 목적은 당신에게 달려으로 파일 읽기)를 Map<String, String>을 반환 Names.bindProperties(binder(), getProperties())를 사용하여 속성을 바인딩 할 수 있습니다.

그런 다음 @Named을 사용하여 이름으로 삽입 할 수 있습니다. 당신이 가지고있는 경우 등록 정보 파일 :

foo=bar 
baz=true 

당신은 당신이 원하는 어디든지 이러한 속성의 값을 삽입 할 수있는이 같은 :

Guice는 형식 문자열에서 값을 변환 할 수는 주입되는

@Inject 
public SomeClass(@Named("foo") String foo, @Named("baz") boolean baz) {...} 
같은 위의 boolean은 자동으로 (문자열이 적절한 형식이라고 가정). 이것은 기본 유형, enum 및 클래스 리터럴에 대해 작동합니다.

+0

NB는 guice 3.0-rc2 (최신 최신 버전)를 사용하여 javax.inject.Named가 아닌 guice. * 패키지에서 @Named를 가져 오는 경우에만 작동합니다. –

+0

@ mjg123 : 사실이 아니어야합니다 ... Guice를'@ Named'와'@ javax.inject.Named'를 서로 바꾸어주는 기능을 구현했습니다. 테스트가 포함 된 테스트 [here] (http://code.google.com/p/google-guice/source/browse/trunk/core/test/com/google/inject/name/NamedEquivalanceTest.java)를 참조하십시오. 이것은 Names.bindProperties와 작동합니다. 너 해봤 어? – ColinD

+1

예. 시도해 보았습니다. OP와 같은 질문을했기 때문에이 페이지를보고있었습니다. 나는 '부울 (boolean)'주입의 경우에 특별히 그것을 발견했다. 내가 사용했던 문제였다.하지만 나는 Guice의 전문가와는 거리가 멀다는 것을 인정한다. –