SpringBoot使用RestTemplate進行不同服務之間的遠程調用,超簡單

在開發過程中,許多開發人員可能都會遇到一些需求,就是在一個服務中去調用另一個服務中的接口。當然,現在有了Springcloud的存在,該問題就很簡單了,直接通過Eureka註冊中心進行註冊就能輕鬆完成調用。但是有時候我們在維護老項目,而老項目中又沒有使用springcloud的話,那怎麼辦呢,那麼就只有使用最原始的遠程調用方法-------RestTemplate來完成了。
雖然這個東西比較老了,但是還是在這裏記錄一下,以防以後自己遇到同樣的問題,好直接拿出來使用,廢話不多說,總共就兩步,非常簡單。直接上代碼:

1、首先,在我們需要調用接口的項目中,創建一個類,類名自定義即可,重點是類裏面的內容。代碼如下:

@Configuration  //表示交給spring管理,從而創建一個ConfigBean的bean
public class ConfigBean {
    @Bean
    public RestTemplate getTemplate(){
        return new RestTemplate();
    }
}

說白一點,就是將這個類通過Configuration 註解來交給spring管理,然後創建一個bean。

2、就是在controller中使用這個bean來進行遠程調用,代碼如下:

@RestController
@RequestMapping("/consumer")
public class UserController {

    /**
     * 通過原始的方式,即通過RestTemplate來進行遠程調用,不通過Eureka
     */
    //多個方法調用只需改一處就ok
    public static  final String URL_PREFIX = "http://localhost:8001";
    @Autowired
    private RestTemplate restTemplate;

    @GetMapping("/getUserById")
    public User getUserById(@RequestParam Integer id){
        User user = restTemplate.getForObject(URL_PREFIX+"/provider/getUserById?id="+id, User.class);
        return user;
    }
}

直白一點,就會注入RestTemplate,然後通過調用它的getForObject方法,這個方法兩個參數,第一個參數爲被調用接口的url,第二個參數爲返回值類型點上class。

通過以上兩步,就可以分分鐘實現原始的服務間的遠程調用,是不是很簡單呢

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章