/ Как да използвате CheckedProvider-Guice - Java, инжектиране на зависимост, guice

Как да използвате CheckedProvider-Guice - java, инжектиране на зависимости, guice

Аз съм с Guice за зависимост инжекция. Искам да използвам @CheckedProvides, тъй като конструкцията на обекта може да изхвърли изключение и не искам тя да бъде затворена в ProvisionException. Намерих това полезно, но не мога да получа пълната картина. Създал съм интерфейс, който разширява интерфейса на CheckedProvider. Сега искам да знам какво ще съдържа класът за изпълнение на този интерфейс?

Интерфейсът ми изглежда

public interface TokenEncrypterProvider <T> extends CheckedProvider<T> {
T get() throws  ExceptionInInitializerError;
}

Искам да се използва като

@Provides
public TokenManager getTokenManager(SomeClass obj) {
return new TokenManager(obj);
}

@CheckedProvides(TokenEncrypterProvider.class)
public SomeClass getEncrypter() {
try {
return new SomeClassFactory()
.buildEncryptionClient(AppConfig.findString("xyz"));
} catch (Exception e) {
throw new ExceptionInInitializerError(e);
}
}

public class TokenManager {
private final SomeClass obj;
@Inject
public TokenManager(SomeClass obj) {
this.obj = obj;
}
...
}

сега за обвързване какво трябва да пиша

bind(TokenEncrypterProvider.class).toProvider(WHICHCLASS?.class);

или ако не е начинът да използвате CheckedProvides, моля, посочете правилния.

Отговори:

0 за отговор № 1

Предполагам, че използвате Guice 3+ или 4+. Вие не трябва да обвързвате доставчика си, ако използвате CheckedProvides анотации.

Трябва да добавите install(ThrowingProviderBinder.forModule(this)) в configure() метод на вашия модул, за да можете да го използвате @CheckedProvides методи.

документация