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;
    }
}