[英]Autowire specific inner bean in Spring
我有一個名為HttpClient
的接口,以及該bean的兩個beans
實現,
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;
}
}
現在,我有這個bean的包裝器,該包裝器注入了HttpClient
@Component
public class Wrapper {
@Autowired HttpClient httpClient;
}
當我注入Wrapper
時,有什么選擇嗎
@Autowired Wrapper wrapper;
選擇HttpClient
的特定實現,我的意思是是否要注入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應用程序時,在測試配置文件中運行它。 在此處找到有關彈簧輪廓的更多信息
@Component("httpClientMock")
@Profile("test")
public class HttpClientMock implements HttpClient {
@Override
public String bla() {
return null;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.