使用guicier注射[Dropwizard]替换HTTP RESTTEMPLATE



我们正在从事Drop-Wizard应用程序并使用GUICE进行注入。
我有以下HTTP调用,并且正在实例化HTTP客户端和REST模板。相反,我正在寻找Guice注入这些对象的方法。我该怎么做?

RestTemplate restTemplate = new RestTemplate();
        HttpHeaders headers = new HttpHeaders();
        HttpEntity request;
        headers.set("Accept", MEDIA_TYPE);
        request = new HttpEntity(jsonContent, headers);
    return restTemplate.exchange(url, httpMethod, request, String.class);

理想情况下,您将为经常创建的对象创建工厂,并将工厂注入依赖关系。对于单元测试,您可以模拟工厂的输出并完全控制代码流。

但是,如果要将RestTemplate注入直接依赖性,则可以编写这样的模块:

public MyModule extends AbstractModule {
    @Override
    public void configure() {
    }
    @Provides
    public RestTemplate providesRestTemplate() {
        return new RestTemplate();
    }
}

或喜欢:

public MyModule extends AbstractModule {
    @Override
    public void configure() {
        bind(RestTemplate.class);
    }
}

第一个示例使用我个人更喜欢的Guice @provides注释。第二个使用直接绑定到混凝土类。两者都达到相同的结果,您可以将依赖项注入以下给出的类。

public MyClass {
    private final RestTemplate restTemplate;
    @Inject
    public MyClass(RestTemplate restTemplate) {
        this.restTemplate = restTemplate;
    }
}

最新更新