簡體   English   中英

在Spring中自動連線特定的內部bean

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM