Ribbon的幾種配置方式詳解


文章目錄
 
Ribbon的自定義配置(java代碼方式)生效條件
 
Ribbon的注意事項
0、Ribbon的自定義配置優先級:
 
1、自定義配置時,@Configuration和@ComponentScan包不應重疊
 
2、使用RestTemplate時,想要獲得一個List時,應該用數組,而不應該直接用List
 
Ribbon的自定義配置(java代碼方式)生效條件
 
第一種方式:將TestConfiguration類放在application啟動類上層
 
第二種方式:將TestConfiguration類放在application啟動類同層及以下,
 
需在application啟動類上添加注解
 
@ComponentScan(excludeFilters = { @ComponentScan.Filter(type = FilterType.ANNOTATION, value = ExcludeFromComponentScan.class) })

需在application啟動類同層添加接口類ExcludeFromComponentScan.java:

package com.mmzs.cloud;

public @interface ExcludeFromComponentScan {

}

並在ExcludeFromComponentScan.class接口添加注解@ExcludeFromComponentScan;並且注釋如下內容:

 @Autowired
 IClientConfig config;

Ribbon的注意事項

0、Ribbon的自定義配置優先級:

配置文件>java代碼>默認配置

1、自定義配置時,@Configuration和@ComponentScan包不應重疊

  • 示例:
    @RibbonClient(name = "microservice-provider-user", configuration = TestConfiguration.class)
    @ComponentScan(excludeFilters = { @ComponentScan.Filter(type = FilterType.ANNOTATION, value = ExcludeFromComponentScan.class) })

2、使用RestTemplate時,想要獲得一個List時,應該用數組,而不應該直接用List

  • 錯誤用法
    List<User> users = this.restTemplate.getForObject("http://microservice-provider-user/list-all/", List.class);  
    for (User user : users) {
        System.out.println("輸出:" + user.getId() + "+" + user.getUsername());
    }

正確用法

    User[] users = this.restTemplate.getForObject("http://microservice-provider-user/list-all", User[].class);
    List<User> lists = Arrays.asList(users);
    for (User user : lists) {
        System.out.println("輸出:" + user.getId() + "+" + user.getUsername());
    }    

我這兒整理了比較全面的JAVA相關的面試資料,


需要領取面試資料的同學,請加群:473984645


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM