0

偽のターゲットを偽装する方法はありますか? 私のユースケースは次のとおりです。

  1. 同じ JVM で開始することも、別のサービスとして開始することもできるサービスがあります。
  2. サービスが同じ JVM で開始されている場合は、Guice を使用してバインドします。
  3. サービスがjvmの外部で開始された場合、fiegnを使用してサービスをバインドし、guiceに同じものを注入させます。
4

1 に答える 1

0

ProviderGoogle 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());

}

}

于 2016-08-10T19:50:47.173 に答える