2016-07-11 4 views
2

Читаю свойства из файла конф с помощью GuiceGuice значение по умолчанию для @Named

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

Здесь значение 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, поэтому он не работает, если известная привязка явно не объявлена. Удаление этого требования (т. Е. Разрешение неявных привязок) и/или маркировка @Inject аннотации optional должно быть достаточным.

Смежные вопросы