鉴于以下类:
public class HttpHelper
{
private readonly HttpClient client;
public HttpHelper(HttpClient client)
{
this.client = client;
}
}
public class ServiceA
{
private readonly HttpHelper helper;
public ServiceA(HttpHelper helper)
{
this.helper = helper;
}
}
public class ServiceB
{
private readonly HttpHelper helper;
public ServiceB(HttpHelper helper)
{
this.helper = helper;
}
}
和以下设置:
sc.AddSingleton<ServiceA>()
.AddHttpClient<HttpHelper>()
.ConfigureHttpClient((sp, client) => { client.BaseAddress = new Uri("http://domainA"); });
sc.AddSingleton<ServiceB>()
.AddHttpClient<HttpHelper>()
.ConfigureHttpClient((sp, client) => { client.BaseAddress = new Uri("http://domainB"); });
当我尝试解析ServiceA和ServiceB时,它们都得到一个具有相同URL的HttpClient。
我如何更改DI中的注册,使每个服务都得到正确的HttpClient注入?
TIA
/Søren
另一种方法是按命名工厂进行配置:
//configure your clients
services.AddHttpClient("clientName1", client => {
//configure
});
services.AddHttpClient("clientName2", client => {
//configure
});
//configure your services
services.AddScoped<ServiceA>(sp =>
{
var client = sp.GetRequiredService<IHttpClientFactory>()
.CreateClient("clientName1");
return new ServiceA(client);
});
services.AddScoped<ServiceB>(sp =>
{
var client = sp.GetRequiredService<IHttpClientFactory>()
.CreateClient("clientName2");
return new ServiceB(client);
});
这种方法的一个问题是,您需要明确定义服务A和B的解析器。
我宁愿做这样的事。
public class ServiceA
{
private readonly HttpClient httpClient;
public ServiceA(HttpClient httpClient)
{
this.httpClient = httpClient;
}
}
public class ServiceB
{
private readonly HttpClient httpClient;
public ServiceB(HttpClient httpClient)
{
this.httpClient = httpClient;
}
}
和ConfigureService。
services.AddHttpClient<ServiceA>().ConfigureHttpClient(client =>
{
client.BaseAddress = new Uri("http://domainA");
});
services.AddHttpClient<ServiceB>().ConfigureHttpClient(client =>
{
client.BaseAddress = new Uri("http://domainB");
});
注:
在你的情况下,有两件事是有问题的。
我们正计划将Graphql用于编排(For e.用户界面客户端调用图形ql服务,该服务转到多个Restendpoint并返回结果)。这里的问题是,从一个Restendpoint,我们必须根据客户端请求的字段传递不同类型的查询参数。 我们使用Spring Bootgraphql和graphql java工具库来初始化graphql 我的代码解析用户字段并调用restendpoint,以便在一次调用(
我一直在阅读graphQL文档,发现它们以两种方式解释了graphQL服务器的实现:一种是使用graphQL瑜伽,这是一种功能齐全的graphQL服务器,另一种是使用graphQL、express graphQL和express。在这两种情况下,我们在创建服务器实例时传递模式和解析器函数。 但是解析器函数的实现是不同的。使用graphql瑜伽时,解析器函数提供了4个参数,其中包含有关父对象、接收的
问题内容: 我正在尝试从服务器解析JSON响应,如果在post方法中发送的查询中有更改,我将第一个作为响应,否则,我将第二个作为响应。 1: 2: 如您所见,返回对象是否更改,如果没有更改,则返回字符串。 我正在使用这种方法来获取数据,并且我正在使用Gson Converter来映射数据。 这是请求界面 这是我的POJO课 最后我进行了改造电话: 问题答案: 谢谢您的建议,但我想出了一种可行的方法
我遇到了一个奇怪的问题,我的Maven文件中有两个依赖项,它们都定义了。我遇到的问题是,我的一个依赖项显然使用了代码所期望的不同版本,它会抛出and错误。 我的代码正在从Tika依赖项获取类,这导致了问题。我希望它来自我定义的,这是正确的版本。它似乎也忽略了文件中依赖项的排序。
我在ES7.8中创建了一个日期格式为“YYYY-MM-DD”的索引。 然而,当我点击地图上的“基线”字段时,在Filter上传递的实际值是yyyy-mm-dd00:00:00.000z。 有没有人可以建议一下,我怎样才能在过滤器中得到正确的日期格式“YYYY-MM-DD”? 多谢了。 下面是请求中的示例文档 “命中”:[{“_index”:“program_b”,“_type”:“_doc”,“_
我有一个POJO,它有一个字段: 当将一个json响应解析到这个资产POJO中时,一切工作都很完美。但是,与此资产附带的关键字有一个细微的区别。它可以是: 或 有没有一种方法来注释POJO来识别这个案例并反序列化到相同的字段中。两者不可能出现在相同的答复中。