我想使用第三方客户端api。我想创建一个serviceclient示例并使用postmessageapi。我创建了两个类,serviceclient和serviceclientapi我应该如何绑定它?谢谢!
public class ServiceClient {
@Provides
@Singleton
public ServiceClient provideServiceClient() {
return new ServiceClientBuilder()
.withEndpoint()
.withClient(ClientBuilder.newClient())
.withSystem(SystemBuilder.standard().build())
.build();
}
public class ServiceClientAPI {
private static final Logger LOGGER = LoggerFactory.getLogger(ServiceClientAPI.class);
@Inject
private ServiceClient ServiceClient;
public Value postMessage(@NonNull Value value) {
LOGGER.info("Value is " + value);
try {
Response response = ServiceClient.postMessage(value);
return response;
} catch (Exception ex) {
String errMsg = String.format("Error hitting the Service");
LOGGER.error(errMsg, ex);
throw new Exception(errMsg, ex);
}
}
It doesn't work, how should I bind them?
public class ServiceModule extends AbstractModule {
@Override
protected void configure() {
bind(ServiceClient.class).to(ServiceClientAPI.class);
}
}
1条答案
按热度按时间tag5nh1u1#
看起来你在混合一些概念。
如果你有一个简单的项目。我建议将客户机生成器移到模块中,并删除serviceclient类。看起来serviceclientapi是一个 Package 器,所以不要将serviceclient绑定到serviceclientapi。@inject会帮你搞定的只要按原样绑定就行了。
当涉及到更大的项目和提供程序时,您可能希望在它们自己的类中使用提供程序。在本例中,创建serviceclientprovider
模块看起来像
看到了吗https://github.com/google/guice/wiki/providerbindings guice@提供方法和提供程序类