gpt4 book ai didi

java - Spring 中 Autowiring 特定的内部 bean

转载 作者:行者123 更新时间:2023-11-30 02:20:57 24 4
gpt4 key购买 nike

我有一个名为 HttpClient 的接口(interface),以及该 bean 的两个 bean 实现,

 public interface HttpClient {
String bla();
}


@Component
public class HttpClientImpl implements HttpClient {
@Override
public String bla() {
return null;
}
}


@Component
public class HttpClientMock implements HttpClient {
@Override
public String bla() {
return null;
}
}

现在我有一个用于注入(inject) HttpClient 的 bean 包装器

@Component
public class Wrapper {
@Autowired HttpClient httpClient;
}

注入(inject)Wrapper时有什么方法可以选择

@Autowired Wrapper wrapper;

选择HttpClient的具体实现,我的意思是如果我想注入(inject)HttpClientMock

最佳答案

@Component("httpClient")
public class HttpClientImpl implements HttpClient {
@Override
public String bla() {
return null;
}
}

@Component("httpClientMock")
public class HttpClientMock implements HttpClient {
@Override
public String bla() {
return null;
}
}

@Component
public class Wrapper {
@Autowired
@Qualifier("httpClient")
HttpClient httpClient;

@Autowired
@Qualifier("httpClientMock")
HttpClient httpClientMock;
}

在这里,您似乎需要您的 httpClient 进行测试,在这种情况下,我不会说按照上述方式执行,而是创建如下所示的配置文件(您可以为其他配置文件创建不同的配置文件),并且当您运行 Spring 应用程序时,运行它在测试配置文件中。查找有关 spring profiles here 的更多信息

@Component("httpClientMock")
@Profile("test")
public class HttpClientMock implements HttpClient {
@Override
public String bla() {
return null;
}
}

关于java - Spring 中 Autowiring 特定的内部 bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46840469/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com