2016-07-11 12 views
2

내가 여기 Guice의 기본값은 @Named

@Inject 
@Named("test.var1") 
private int var1 = 2; 

Guice

를 사용하여 conf의 파일 속성을 읽고있다, conf의 파일에 test.var1의 값은 성공적으로 VAR1을 주입하고있다. 이 속성이 파일에 없으면 기본적으로 2로 설정되기를 원합니다. 그러나이 속성 "test.var1"이 속성 파일에 없으면 컴파일 오류가 발생합니다.

Explicit bindings are required and java.lang.Integer annotated with @com.google.inject.name.Named(value=test.var1) is not explicitly bound. 
    while locating java.lang.Integer annotated with @com.google.inject.name.Named(value=test.var1) 
    for parameter 6 at test1.TestParser.<init>(TestParser.java:62) 
    at test1.CarbonServerModule.configure(CarbonServerModule.java:41) 

1 error 
    at com.google.inject.internal.Errors.throwCreationExceptionIfErrorsExist(Errors.java:435) 
    at com.google.inject.internal.InternalInjectorCreator.initializeStatically(InternalInjectorCreator.java:154) 
    at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:106) 
    at com.google.inject.Guice.createInjector(Guice.java:95) 
    at com.google.inject.Guice.createInjector(Guice.java:72) 
    at test1.Main.<init>(Main.java:198) 
    at test1.Main.main(Main.java:244) 

누군가가 내가 여기서하려고하는 것을 도와 줄 수 있습니까?

답변

0

오류 메시지에 Guice를 require explicit bindings으로 구성 했으므로 알려진 바인딩이 명시 적으로 선언되지 않은 경우 오류가 발생합니다. 해당 요구 사항을 삭제 (즉 암시 적 바인딩 허용) 및/또는 주석 optional을 표시하는 것으로 충분합니다.