Java 弹簧中的Autowire专用内梁
我有一个名为Java 弹簧中的Autowire专用内梁,java,spring,spring-boot,Java,Spring,Spring Boot,我有一个名为HttpClient的接口,以及两个beanbean实现 public interface HttpClient { String bla(); } 现在我有了一个注入HttpClient的bean包装器 @Component public class Wrapper { @Autowired HttpClient httpClient; } 当我注入包装器时,有什么方法可以选择吗 @Autowired Wrapper wrapper; 要为HttpCli
HttpClient
的接口,以及两个bean
bean实现
public interface HttpClient {
String bla();
}
现在我有了一个注入HttpClient的bean包装器
@Component
public class Wrapper {
@Autowired HttpClient httpClient;
}
当我注入包装器时,有什么方法可以选择吗
@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应用程序时,在测试配置文件中运行它。查找有关的更多信息
@Autowired Wrapper wrapper;
@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;
}
@Component("httpClientMock")
@Profile("test")
public class HttpClientMock implements HttpClient {
@Override
public String bla() {
return null;
}
}