SpringCloud服務間呼叫

2021-08-23 12:19:53 字數 1854 閱讀 7137

springcloud服務間的呼叫有兩種方式:resttemplate和feignclient。不管是什麼方式,他都是通過rest介面呼叫服務的http介面,引數和結果預設都是通過jackson序列化和反序列化。因為spring mvc的restcontroller定義的介面,返回的資料都是通過jackson序列化成json資料。

一、resttemplate

使用這種方式,只需要定義乙個resttemplate的bean,設定成loadbalanced即可。

如下示例:

@configuration

publicclasssomecloudconfiguration

}

這樣我們就可以在需要用的地方注入這個bean使用:

publicclasssomeserviceclass

}

其它示例參考:

publicclass

@bean

publicresttemplate resttemplate()

publicstaticvoidmain(string args)

}

@restcontroller

classhomecontroller

}

二、feignclient

除了上面的方式,我們還可以用feignclient。

@feignclient(value ="users", path ="/users")

publicinte***ceusercompositeservice ",

method = requestmethod.get,

userdto getuserbyid(@pathvariable long id);

}

我們只需要使用@feignclient定義乙個介面,spring cloud feign會幫我們生成乙個它的實現,從相應的users服務獲取資料。

其中,@feignclient(value = 「users」, path = 「/users/getuserdetail」)裡面的value是服務id,path是這一組介面的path字首。在下面的方法定義裡,就好像設定spring mvc的介面一樣,對於這個方法,它對應的url是/users/getuserdetail/。然後,在使用它的時候,就像注入乙個一般的服務一樣注入後使用即可:

publicclasssomeotherserviceclass

}

其中遇到的坑請參見:

SpringCloud服務調服務

org.springframework.cloud spring cloud starter feign enablefeignclients configuration public class mybatisplusconfig 資料許可權外掛程式 return datascopeinterce...

SpringCloud服務間呼叫

springcloud服務間的呼叫有兩種方式 resttemplate和feignclient。不管是什麼方式,他都是通過rest介面呼叫服務的http介面,引數和結果預設都是通過jackson序列化和反序列化。因為spring mvc的restcontroller定義的介面,返回的資料都是通過ja...

springcloud服務間的呼叫

一。resttemplate的方式 1.url寫死的方式 resttemplate resttemplate new resttemplate string msg resttemplate.getforobject http localhost 8080 server msg string.cla...