偽のターゲットを偽装する方法はありますか? 私のユースケースは次のとおりです。
- 同じ JVM で開始することも、別のサービスとして開始することもできるサービスがあります。
- サービスが同じ JVM で開始されている場合は、Guice を使用してバインドします。
- サービスがjvmの外部で開始された場合、fiegnを使用してサービスをバインドし、guiceに同じものを注入させます。
偽のターゲットを偽装する方法はありますか? 私のユースケースは次のとおりです。
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());
}
}