【问题标题】:bind feign target to guice将 feign 目标绑定到 guice
【发布时间】:2016-07-17 10:32:44
【问题描述】:

有没有办法将 feign 目标绑定到 guice? 我的用例如下:

  1. 我有一个服务,它可以在同一个 JVM 中启动,也可以作为单独的服务启动。
  2. 如果服务是在同一个 JVM 中启动的,那么我将使用 Guice 绑定它。
  3. 如果服务是在 jvm 之外启动的,我想使用 fiegn 绑定服务并让 guice 注入相同的内容。

【问题讨论】:

    标签: java guice netflix-feign feign


    【解决方案1】:

    我使用 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());
    
    }
    

    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-04
      • 2022-09-10
      • 2013-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多