最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringCloud開發(fā)課程查詢功能

 更新時間:2020年12月28日 10:54:09   作者:瑞 新  
這篇文章主要介紹了SpringCloud開發(fā)課程查詢功能,本文通過圖文實例相結(jié)合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

介紹

技術(shù)

在這里插入圖片描述
在這里插入圖片描述

之前有用eureka 現(xiàn)在用nacos
工作流和gateway

在這里插入圖片描述

接口數(shù)據(jù)流向

在這里插入圖片描述

數(shù)據(jù)表

在這里插入圖片描述在這里插入圖片描述

在這里插入圖片描述

新建項目

新建cloud-刪除src-新建modle

Eurak(發(fā)現(xiàn))

 Eureka的作用

114、物業(yè) (注冊中心、心跳機制60s失效踢除)

沒有服務注冊于發(fā)現(xiàn)可以,但是會引來無窮無盡的麻煩
靜態(tài)ip變更,影響多服務模塊

架構(gòu)

在這里插入圖片描述
在這里插入圖片描述

Eurak Server代碼

新建moudle,和業(yè)務完全獨立
pom依賴,最外層pomcloud版本號
新建配置文件
注解啟動

驗證http://localhost:8000/

在這里插入圖片描述

Eureka客戶端代碼

配置dom
配置properties
啟動client

在這里插入圖片描述

利用Feign實現(xiàn)服務間調(diào)用

介紹

歷史
netflex -> open (捐給spring cloud)

非常方便
基于接口和注解,和本地方法一樣爽的http請求

在這里插入圖片描述

代碼

價格中調(diào)用課程服務

引入依賴

<!--  openfeign -->  <dependency>   <groupId>org.springframework.cloud</groupId>   <artifactId>spring-cloud-starter-openfeign</artifactId>  </dependency>

配置文件

#openfeign消費的負載均衡后期再配

加注解

//啟動類的客戶端@EnableFeignClients

客戶端(在調(diào)用類寫接口,復制被調(diào)用服務的controller方法)

package com.bennyrhys.course.client;import com.bennyrhys.entity.Course;import org.springframework.cloud.openfeign.FeignClient;import org.springframework.web.bind.annotation.GetMapping;import java.util.List;/** * @Author bennyrhys * @Date 12/27/20 8:04 PM * 課程列表的Feign客戶端 */@FeignClient("course-list")public interface CourseListClient { @GetMapping("/course") List<Course> getList();}

驗證pom中(自動引入其他服務的依賴)

在這里插入圖片描述

controller(在price服務中調(diào)用course服務的方法)

在這里插入圖片描述

驗證

在這里插入圖片描述

利用Ribbon實現(xiàn)負載均衡

在這里插入圖片描述

在這里插入圖片描述在這里插入圖片描述

修改配置文件

price服務調(diào)用course服務的負載均衡設置

#openfeign消費的負載均衡course-list.ribbon.NFLoadBanlancerRuleClassName=com.netflix.loadbalancer.RoundRobinRule

利用Hystrix實現(xiàn)斷路器

比如獲取用戶信息卡住,但數(shù)據(jù)庫的連接池一直未被釋放。系統(tǒng)崩潰
斷路器保護,某一處出現(xiàn)問題,保證不影響全部不可用,避免故障蔓延

在這里插入圖片描述
依賴pom

<!--  斷路器 客戶端-->  <dependency>   <groupId>org.springframework.cloud</groupId>   <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>  </dependency>

配置

#斷路器 客戶端(默認關閉)feign.hystrix.enabled=true

啟動類注解

@EnableCircuitBreaker

斷路器實現(xiàn)類CourseListClientHystrix

package com.bennyrhys.course.client;import com.bennyrhys.entity.Course;import java.util.ArrayList;import java.util.List;import org.springframework.stereotype.Component;/** * 描述:  斷路器實現(xiàn)類 */@Componentpublic class CourseListClientHystrix implements CourseListClient{ @Override public List<Course> getList() {  List<Course> defaultCourses = new ArrayList<>();  Course course = new Course();  course.setId(1);  course.setCourseId(1);  course.setCourseName("默認課程");  course.setValid(1);  defaultCourses.add(course);  return defaultCourses; }}

指明調(diào)用服務的斷路器類

/** * @Author bennyrhys * @Date 12/27/20 8:04 PM * 課程列表的Feign客戶端 */@FeignClient(value = "course-list", fallback = CourseListClientHystrix.class)@Primary //防止調(diào)用服務的controller爆紅線不好看public interface CourseListClient { @GetMapping("/course") List<Course> getList();}

斷路器效果

在這里插入圖片描述

整合兩個服務

將課程列表和課程價格進行整合

返回實體CourseAndPrice

 Integer id; Integer courseId; String name; Integer price;

service

 @Override public List<CourseAndPrice> getCoursesAndPrice() {  List<CourseAndPrice> courseAndPriceList = new ArrayList<>();  List<Course> courses = courseListClient.courseList();  for (int i = 0; i < courses.size(); i++) {   Course course = courses.get(i);   if (course != null) {    CoursePrice coursePrice = getCoursePrice(course.getCourseId());    CourseAndPrice courseAndPrice = new CourseAndPrice();    courseAndPrice.setPrice(coursePrice.getPrice());    courseAndPrice.setName(course.getCourseName());    courseAndPrice.setId(course.getId());    courseAndPrice.setCourseId(course.getCourseId());    courseAndPriceList.add(courseAndPrice);   }  }  return courseAndPriceList; }}

在這里插入圖片描述

通過網(wǎng)關Zuul實現(xiàn)路由功能

兩個特點

在這里插入圖片描述

Zuul集成

在這里插入圖片描述

新建mudle模塊sourse-zuul

引入依賴

<dependencies> <dependency>  <groupId>org.springframework.cloud</groupId>  <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency>  <groupId>org.springframework.cloud</groupId>  <artifactId>spring-cloud-starter-netflix-zuul</artifactId> </dependency> </dependencies> <build> <plugins>  <plugin>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-maven-plugin</artifactId>  </plugin> </plugins> </build>

配置文件

spring.application.name=course-gatewayserver.port=9000logging.pattern.console=%clr(%d{${LOG_DATEFORMAT_PATTERN:HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:%wEx}mybatis.configuration.map-underscore-to-camel-case=trueeureka.client.service-url.defaultZone=http://localhost:8000/eureka/#zuul.prefix=/bennyrhyszuul.routes.course-list.path=/list/**zuul.routes.course-list.service-id=course-listzuul.routes.course-price.path=/price/**zuul.routes.course-price.service-id=course-price

啟動類 注解

package com.bennyrhys.course;import org.springframework.boot.SpringApplication;import org.springframework.cloud.client.SpringCloudApplication;import org.springframework.cloud.netflix.zuul.EnableZuulProxy;/** * 描述:  網(wǎng)關啟動類 */@EnableZuulProxy@SpringCloudApplicationpublic class ZuulGatewayApplication { public static void main(String[] args) {  SpringApplication.run(ZuulGatewayApplication.class, args); }}

效果圖

在這里插入圖片描述

實現(xiàn)網(wǎng)關過濾器

在這里插入圖片描述

過濾前

package com.bennyrhys.course.filter;import com.netflix.zuul.ZuulFilter;import com.netflix.zuul.context.RequestContext;import com.netflix.zuul.exception.ZuulException;import org.springframework.cloud.netflix.zuul.filters.support.FilterConstants;import org.springframework.stereotype.Component;/** * 描述:  記錄請求時間 */@Componentpublic class PreRequestFilter extends ZuulFilter { @Override public String filterType() {  //過濾器的類型  return FilterConstants.PRE_TYPE; } @Override public int filterOrder() {  return 0; } @Override public boolean shouldFilter() {  //是否啟用過濾器  return true; } @Override public Object run() throws ZuulException {  RequestContext currentContext = RequestContext.getCurrentContext();  currentContext.set("startTime", System.currentTimeMillis());  System.out.println("過濾器已經(jīng)記錄時間");  return null; }}

過濾后

package com.bennyrhys.course.filter;import com.netflix.zuul.ZuulFilter;import com.netflix.zuul.context.RequestContext;import com.netflix.zuul.exception.ZuulException;import org.springframework.cache.annotation.Cacheable;import org.springframework.cloud.netflix.zuul.filters.support.FilterConstants;import org.springframework.stereotype.Component;/** * 描述:  請求處理后的過濾器 */@Componentpublic class PostRequestFilter extends ZuulFilter { @Override public String filterType() {  return FilterConstants.POST_TYPE; } @Override public int filterOrder() {  return FilterConstants.SEND_RESPONSE_FILTER_ORDER - 1; } @Override public boolean shouldFilter() {  return true; } @Override public Object run() throws ZuulException {  RequestContext currentContext = RequestContext.getCurrentContext();  Long startTime = (Long) currentContext.get("startTime");  long duration = System.currentTimeMillis() - startTime;  String requestURI = currentContext.getRequest().getRequestURI();  System.out.println("uri:" + requestURI + ",處理時長:" + duration);  return null; }}

uri:/bennyrhys/list/course,處理時長:919

到此這篇關于SpringCloud開發(fā)課程查詢功能的文章就介紹到這了,更多相關SpringCloud課程查詢內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Spring Bean裝載方式代碼實例解析

    Spring Bean裝載方式代碼實例解析

    這篇文章主要介紹了Spring Bean裝載方式代碼實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-02-02
  • Java垃圾回收機制算法詳解

    Java垃圾回收機制算法詳解

    這篇文章主要介紹了Java垃圾回收機制算法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • Java并發(fā)內(nèi)存模型詳情

    Java并發(fā)內(nèi)存模型詳情

    這篇文章主要介紹了Java并發(fā)內(nèi)存模型,Java是一門支持多線程執(zhí)行的語言,要編寫正確的并發(fā)程序,了解Java內(nèi)存模型是重要前提。而了解硬件內(nèi)存模型有助于理解程序的執(zhí)行,下面文章就來看看詳細內(nèi)容吧
    2021-10-10
  • Java搭建RabbitMq消息中間件過程詳解

    Java搭建RabbitMq消息中間件過程詳解

    這篇文章主要介紹了Java搭建RabbitMq消息中間件過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • Java刪除指定文件夾下的所有內(nèi)容的方法(包括此文件夾)

    Java刪除指定文件夾下的所有內(nèi)容的方法(包括此文件夾)

    下面小編就為大家?guī)硪黄狫ava刪除指定文件夾下的所有內(nèi)容的方法(包括此文件夾) 。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • 詳解Java8新特性如何防止空指針異常

    詳解Java8新特性如何防止空指針異常

    要說 Java 編程中哪個異常是你印象最深刻的,那 NullPointerException 空指針可以說是臭名昭著的,不要說初級程序員會碰到, 即使是中級,專家級程序員稍不留神,就會掉入這個坑里,本文就和大家聊聊Java8新特性如何防止空指針異常
    2023-08-08
  • SpringBoot面試突擊之過濾器和攔截器區(qū)別詳解

    SpringBoot面試突擊之過濾器和攔截器區(qū)別詳解

    過濾器(Filter)和攔截器(Interceptor)都是基于?AOP(Aspect?Oriented?Programming,面向切面編程)思想實現(xiàn)的,用來解決項目中某一類問題的兩種“工具”,但二者有著明顯的差距,接下來我們一起來看
    2022-10-10
  • Java如何在不存在文件夾的目錄下創(chuàng)建文件

    Java如何在不存在文件夾的目錄下創(chuàng)建文件

    這篇文章主要介紹了Java如何在不存在文件夾的目錄下創(chuàng)建文件,代碼簡單易懂,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-08-08
  • Java方法及數(shù)組相關原理解析

    Java方法及數(shù)組相關原理解析

    這篇文章主要介紹了Java方法及數(shù)組相關原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-12-12
  • 如何在springboot中實現(xiàn)頁面的國際化

    如何在springboot中實現(xiàn)頁面的國際化

    今天帶大家學習如何在springboot中實現(xiàn)頁面的國際化,文中有非常詳細的圖文解說及代碼示例,對正在學習java的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-05-05

最新評論

漠河县| 新巴尔虎左旗| 长丰县| 邢台县| 长宁县| 奉新县| 佳木斯市| 洪泽县| 大荔县| 济南市| 万荣县| 光山县| 张家界市| 台北县| 突泉县| 余江县| 永康市| 金湖县| 北票市| 丰台区| 板桥市| 岐山县| 大埔县| 三明市| 莱阳市| 房产| 宁河县| 冷水江市| 余庆县| 肥西县| 本溪| 略阳县| 顺昌县| 延长县| 东安县| 勐海县| 秀山| 浏阳市| 西贡区| 获嘉县| 双流县|