Springboot?內(nèi)部服務(wù)調(diào)用方式
Eureka注冊(cè)的服務(wù)之間互相調(diào)用
1.請(qǐng)求方
啟動(dòng)類添加注解,掃描Eureka 中的全部服務(wù)
@SpringBootApplication @EnableEurekaClient @EnableFeignClients public class LoginServiceApplication {?? ? ? ? public static void main(String[] args) { ? ? ? ? new SpringApplicationBuilder(LoginServiceApplication.class).web(true).run(args); ? ? }? ?? }
pom.xml 添加包 (版本號(hào) 根據(jù)實(shí)際選擇)
<dependency> ? ? <groupId>org.springframework.cloud</groupId> ? ? <artifactId>spring-cloud-starter-feign</artifactId> ?? ?<version>1.4.6.RELEASE</version> </dependency>
創(chuàng)建接口類
@FeignClient(name="hello-service") //spring service name public interface FeignVehicle { ?? ? ?? ?@RequestMapping(value="/hello", method = RequestMethod.GET) ?? ?@ResponseBody ?? ?public List<Map> hello(@RequestParam Map<String,String> params); }
實(shí)現(xiàn)類注入此接口類
@Autowired FeignVehicle feignVehicle;
使用的時(shí)候直接按照正常調(diào)用方式即可
Map<String,String> map = new HashMap<String, String>(); feignVehicle.hello(map);
跨服務(wù)調(diào)用的時(shí)候出現(xiàn)token信息取不到,在發(fā)送方添加攔截器
@Configuration public class FeignConfiguration { ? ? ? @Bean ? ? public RequestInterceptor requestInterceptor() { ? ? ? ? return new RequestInterceptor() { ? ? ? ? ? ? @Override ? ? ? ? ? ? public void apply(RequestTemplate template) {? ? ? ? ? ? ? ? ? ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder ? ? ? ? ? ? ? ? ? ? ? ? .getRequestAttributes(); ? ? ? ? ? ? ? ? HttpServletRequest request = attributes.getRequest(); ?//當(dāng)前服務(wù)token ? ? ? ? ? ? ? ? ? template.header("Authorization","Bearer " + request.getSession().getId()); //template 接收請(qǐng)求方token ? ? ? ? ? ? }? ? ? ? ? }; ? ? } }
2.接收方
請(qǐng)求 啟動(dòng)類
@SpringBootApplication @EnableEurekaClient public class HelloServiceApplication {?? ? ? ? public static void main(String[] args) { ? ? ? ? new SpringApplicationBuilder(HelloServiceApplication.class).web(true).run(args); ? ? }? ?? }
請(qǐng)求Controller
@Controller @RequestMapping("/hello") public class HelloController {?? ? ? ? @RequestMapping(value="/hello",method = RequestMethod.GET) ? ? @ResponseBody ? ? public List<Map> hello(@RequestParam Map<String, String> queryParam) { ? ? ? ? return null; ? ? ? } }
多模塊化,服務(wù)間調(diào)用的坑
問題背景
product
服務(wù)作為服務(wù)端,提供了一個(gè) 對(duì)外通信Fegin接口 ProductClient,放在了com.imooc.product.client jar包下order
服務(wù)作為客戶端,直接引用上面的jar,使用 ProductClient ,啟動(dòng)主類后報(bào)下圖錯(cuò)誤:
解決辦法
多模塊化時(shí),應(yīng)該在order主類上添加下面圈出來的注解,這樣啟動(dòng)后就能掃描這個(gè)包。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
在IntelliJ IDEA中使用gulp的方法步驟(圖文)
這篇文章主要介紹了在IntelliJ IDEA中使用gulp的方法步驟(圖文),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-01-01JVM內(nèi)存結(jié)構(gòu)劃分實(shí)例解析
這篇文章主要介紹了JVM內(nèi)存結(jié)構(gòu)劃分實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12java final 和instanceof 關(guān)鍵字的區(qū)別
這篇文章介紹了java final 和instanceof 關(guān)鍵字的區(qū)別,有需要的朋友可以參考一下2013-09-09教你創(chuàng)建springcloud微服務(wù)的基礎(chǔ)子服務(wù)的超詳細(xì)過程
這篇文章主要介紹了創(chuàng)建springcloud微服務(wù)的基礎(chǔ)子服務(wù),主要是創(chuàng)建兩個(gè)springboot服務(wù),在教程中增加springcloud相關(guān)組件,本文分步驟給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04Java簡(jiǎn)單實(shí)現(xiàn)農(nóng)夫過河問題示例
這篇文章主要介紹了Java簡(jiǎn)單實(shí)現(xiàn)農(nóng)夫過河問題,簡(jiǎn)單描述了農(nóng)夫過河問題的概念、原理并結(jié)合簡(jiǎn)單實(shí)例形式分析了java解決農(nóng)夫過河問題的相關(guān)操作技巧,需要的朋友可以參考下2017-12-12Java 從網(wǎng)上下載文件的幾種方式實(shí)例代碼詳解
本文通過實(shí)例代碼給大家介紹了java從網(wǎng)上下載文件的幾種方式,非常不錯(cuò),具有參考借鑒價(jià)值,需要的的朋友參考下吧2017-08-08詳解mybatis-plus的 mapper.xml 路徑配置的坑
這篇文章主要介紹了詳解mybatis-plus的 mapper.xml 路徑配置的坑,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08SpringCloud之Zuul網(wǎng)關(guān)原理及其配置講解
這篇文章主要介紹了SpringCloud之Zuul網(wǎng)關(guān)原理及其配置講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03