我们正在从事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;
}
}