0
有没有办法将伪装目标绑定到guice? 我的用例情况如下:将伪装目标绑定到guice
- 我有一个服务,它可以在同一个JVM或者作为一个单独的服务进行任何启动。
- 如果服务在同一个JVM中启动,那么我将使用Guice绑定它。
- 如果服务是在jvm之外启动的,我想用fiegn绑定服务并让guice注入。
有没有办法将伪装目标绑定到guice? 我的用例情况如下:将伪装目标绑定到guice
我使用Google Guice中的Provider
实现解决了这个问题。 下面是一个示例
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());
}
}