[英]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.