Привязать притворную цель к обману
Есть ли способ привязать притворную цель к обману? Мой вариант использования выглядит следующим образом:
- У меня есть служба, которая может быть запущена в той же JVM или как отдельная служба.
- если служба запущена в той же JVM, я свяжу ее с помощью Guice.
- если служба запускается за пределами jvm, я хочу связать службу с помощью fiegn и заставить guice сделать то же самое.
1 ответ
Я решил это с помощью Provider
Реализация в Google Guice. Вот образец
public class Main {
public static AccountService get() {
return Feign.builder()
.contract(new JAXRSContract())
.decoder(new GsonDecoder())
.target(AccountService.class, "http://localhost:9090");
}
static class RestClientProvider implements Provider<AccountService> {
RestClientProvider() {
}
@Override
public AccountService get() {
return Main.get();
}
}
static class AppInjector extends AbstractModule {
@Override
protected void configure() {
Provider<AccountService> prov = new RestClientProvider();
bind(AccountService.class).toProvider(prov);
}
}
public static void main (String... args) {
Injector inj = Guice.createInjector(new AppInjector());
AccountService ac = inj.getInstance(AccountService.class);
Account a = ac.getAccountByName("Mihir");
System.out.println(a.getName());
}
}