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

如何使用IDEA 搭建 SpringCloud 項(xiàng)目

 更新時(shí)間:2023年11月24日 10:56:51   作者:棧老師不回家  
所謂微服務(wù),就是要把整個(gè)業(yè)務(wù)模塊拆分成多個(gè)各司其職的小模塊,做到單一職責(zé)原則,不會(huì)重復(fù)開發(fā)相同的業(yè)務(wù)代碼,實(shí)現(xiàn)真正意義上的高內(nèi)聚、低耦合,這篇文章主要介紹了如何使用IDEA 搭建 SpringCloud 項(xiàng)目,需要的朋友可以參考下

一、前言

所謂微服務(wù),就是要把整個(gè)業(yè)務(wù)模塊拆分成多個(gè)各司其職的小模塊,做到單一職責(zé)原則,不會(huì)重復(fù)開發(fā)相同的業(yè)務(wù)代碼,實(shí)現(xiàn)真正意義上的高內(nèi)聚、低耦合。同時(shí),微服務(wù)可以對(duì)外暴露接口,供其它微服務(wù)使用。

如果我們?cè)?A 服務(wù)中發(fā)起一個(gè) http 請(qǐng)求到 B 服務(wù),那么就可以實(shí)現(xiàn)微服務(wù)的遠(yuǎn)程調(diào)用。(restTemplate 的 getForObject 方法可以向?yàn)g覽器發(fā)起請(qǐng)求)
這種方法看起來是可行的,但是把 url 路徑和 Java 代碼耦合到一起,是不符合開閉原則的。于是就出現(xiàn)了 Eureka 注冊(cè)中心。

每一個(gè)微服務(wù)在啟動(dòng)的那一刻都需要做一件事情,就是把自己的服務(wù)信息注冊(cè)給 Eureka,比如服務(wù)名稱、服務(wù)端口等,其它微服務(wù)想要調(diào)用另一個(gè)服務(wù)的時(shí)候,直接去 Eureka 里面拉取信息就可以了。
同時(shí),為了避免拉取的服務(wù)已經(jīng)掛掉了,我們的服務(wù)每隔 30 秒就會(huì)向 Eureka 發(fā)起一次心跳,來證明自己還活著,如果有一天不跳了,Eureka 就會(huì)把它從注冊(cè)列表中剔除。

如果存在多個(gè)服務(wù)提供者,服務(wù)消費(fèi)者就會(huì)利用負(fù)載均衡算法,從服務(wù)列表中挑選一個(gè)!

二、項(xiàng)目搭建

1. 數(shù)據(jù)庫準(zhǔn)備

此處我們要準(zhǔn)備兩個(gè)數(shù)據(jù)庫,user 服務(wù)和 order 服務(wù)各自擁有自己的數(shù)據(jù)庫。

CREATE TABLE USER (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(20) NOT NULL,
phone VARCHAR(15) NOT NULL,
address VARCHAR(50) NOT NULL
);
INSERT INTO USER VALUES (1, "棧老師不回家", 13299075426, "山西省大同市")
INSERT INTO USER(NAME, phone, address) VALUES ("肖恩", 18834267011, "山西省太原市")
INSERT INTO USER(NAME, phone, address) VALUES ("李華", 12481076533, "山西省運(yùn)城市")

CREATE TABLE orders (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(30) NOT NULL,
price INT NOT NULL,
user_id INT NOT NULL REFERENCES USER(id)
)
INSERT INTO orders VALUES (1, "可樂雞翅", 32, 1);
INSERT INTO orders(NAME, price, user_id) VALUES("冰鎮(zhèn)啤酒", 12, 1);
INSERT INTO orders(NAME, price, user_id) VALUES("草莓冰激凌", 8, 2);
INSERT INTO orders(NAME, price, user_id) VALUES("狼牙土豆", 10, 3);

2. 創(chuàng)建父工程

① 還是 SpringBoot 項(xiàng)目,選擇 Spring Web 依賴

② 刪掉 src 目錄及 mvnw 開頭的兩個(gè)文件

③ 在 pom 文件中添加 packaging 標(biāo)簽和 SpringCloud 版本,并修改 SpringBoot 版本

④ 引入 mysql 和 mybatis 依賴,供后續(xù)使用

⑤ 添加 SpringCloud 依賴庫,后續(xù)子模塊使用的時(shí)候就不需要再指定版本了

3. 創(chuàng)建注冊(cè)中心

① 在父級(jí)項(xiàng)目上新建模塊

② 選擇 Eureka Server

③ 修改子模塊的 parent 標(biāo)簽內(nèi)容,指向父工程

因?yàn)楦改K中已經(jīng)指定了 SpringCloud 的版本,所以子模塊不需要再重復(fù)寫!

④ 在父級(jí) pom 中添加該子模塊

⑤ 因?yàn)樽宇悤?huì)繼承父類的依賴,所以子類中多余的依賴可以刪掉,后續(xù)需要什么加什么

⑤ 編寫 application.yml 文件

#服務(wù)端口,隨便起
server:
  port: 11011
#服務(wù)名稱
spring:
  application:
    name: eurekaserver
  datasource:
    url: jdbc:mysql:///ZXEdb?serverTimezone=UTC
    username: root
    password: 856724bb
    driver-class-name: com.mysql.cj.jdbc.Driver
#eureka地址
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:11011/eureka/
    register-with-eureka: false
    fetch-registry: false

服務(wù)名稱和 eureka 地址的配置我們可以認(rèn)為是服務(wù)注冊(cè)的配置,而 eureka 自己也是一個(gè)微服務(wù),所以在服務(wù)啟動(dòng)的時(shí)候,它也會(huì)把自己注冊(cè)到 eureka 上!

⑥ 啟動(dòng)類上添加 @EnableEurekaServer 注解

⑦ 輸入 http://localhost:11011/,出現(xiàn)以下界面即 Eureka 創(chuàng)建成功。

4. 服務(wù)注冊(cè)

情形:
創(chuàng)建一個(gè) order 服務(wù)和一個(gè) user 服務(wù),并把它們都注冊(cè)到 eureka 中。order 里面需要用到 user,所以此時(shí)的 order 是消費(fèi)者,user 是提供者。

對(duì)于服務(wù)的注冊(cè),我們只需要完成兩步:
① 引入 spring-cloud-starter-netflix-eureka-client 依賴;
② 在 yml 文件中配置服務(wù)名稱和 eureka 地址。

eureka 服務(wù)的依賴是 server,其余微服務(wù)都是 client!

① 創(chuàng)建 order 服務(wù)和 user 服務(wù)

② 引入 eureka 客戶端依賴

③ 在父級(jí) pom 中添加該子模塊

④ 編寫 yml 配置文件

#服務(wù)端口,隨便起
server:
  port: 8081
#服務(wù)名稱
spring:
  application:
    name: userserver
  datasource:
    url: jdbc:mysql:///user?serverTimezone=UTC
    username: root
    password: 856724bb
    driver-class-name: com.mysql.cj.jdbc.Driver
#eureka地址
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:11011/eureka/

④ 啟動(dòng)類上添加 @EnableEurekaServer 注解

以上是 user 的注冊(cè),order 同理!

5. 編寫業(yè)務(wù)代碼

要求查詢訂單表,其中訂單表里面包含用戶信息。

① 實(shí)體類

② 配置文件中添加駝峰命名功能及實(shí)體映射

#開啟駝峰命名及實(shí)體映射
mybatis:
  type-aliases-package: com.zxe.orderserver.pojo
  configuration:
    map-underscore-to-camel-case: true

③ 編寫數(shù)據(jù)層、業(yè)務(wù)層及控制層的代碼

6. 服務(wù)拉取

服務(wù)拉取是基于服務(wù)名稱獲取服務(wù)列表,然后再對(duì)服務(wù)列表做負(fù)載均衡。

① 在 order-service 的啟動(dòng)類中注冊(cè) RestTemplate

@LoadBalanced 注解用來做負(fù)載均衡!

② 編寫 OrderService 代碼,order 要調(diào)用 user,自然要用到 user 接口的訪問路徑,此處的路徑中我們用服務(wù)名來代替 localhost

@Service
public class OrderService {
    @Autowired
    private OrderMapper orderMapper;
    @Autowired
    private RestTemplate restTemplate;
    public Order findById(Integer id) {
        Order order = orderMapper.find(id);
        String url = "http://userserver/user/" + order.getUserId();
        User user = restTemplate.getForObject(url, User.class);
        order.setUser(user);
        return order;
    }
}

③ 運(yùn)行結(jié)果

到此這篇關(guān)于IDEA 搭建 SpringCloud 項(xiàng)目的文章就介紹到這了,更多相關(guān)IDEA 搭建 SpringCloud 項(xiàng)目?jī)?nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • icePDF去水印的方法(推薦)

    icePDF去水印的方法(推薦)

    下面小編就為大家?guī)硪黄猧cePDF去水印的方法(推薦)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-12-12
  • Mybatis如何獲取最新插入數(shù)據(jù)的id

    Mybatis如何獲取最新插入數(shù)據(jù)的id

    這篇文章主要介紹了Mybatis如何獲取最新插入數(shù)據(jù)的id,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Java效率提升神器之Guava-Joiner

    Java效率提升神器之Guava-Joiner

    這篇文章主要介紹了Java效率提升神器之Guava-Joiner,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-07-07
  • Mapper.xml中查詢返回帶有List屬性的實(shí)體類結(jié)果問題

    Mapper.xml中查詢返回帶有List屬性的實(shí)體類結(jié)果問題

    這篇文章主要介紹了Mapper.xml中查詢返回帶有List屬性的實(shí)體類結(jié)果問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Java發(fā)送郵件javax.mail的實(shí)現(xiàn)方法

    Java發(fā)送郵件javax.mail的實(shí)現(xiàn)方法

    這篇文章主要為大家介紹了Java發(fā)送郵件javax.mail的實(shí)現(xiàn)方法,具有一定的參考價(jià)值,代碼都有詳細(xì)的注釋,感興趣的小伙伴們可以參考一下
    2016-01-01
  • 淺談Mybatis傳參類型如何確定

    淺談Mybatis傳參類型如何確定

    最近有小伙伴在討論#{}與${}的區(qū)別時(shí),有提到#{}是用字符串進(jìn)行替換,本文主要介紹了mapper接口中不同的參數(shù)類型,最終拼接sql中是如何進(jìn)行替換的,感興趣的可以了解一下
    2021-10-10
  • IDEA搭建Maven模塊化項(xiàng)目的實(shí)現(xiàn)

    IDEA搭建Maven模塊化項(xiàng)目的實(shí)現(xiàn)

    本文主要介紹了IDEA搭建Maven模塊化項(xiàng)目的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • Java Socket設(shè)置timeout的幾種常用方式說明

    Java Socket設(shè)置timeout的幾種常用方式說明

    這篇文章主要介紹了Java Socket設(shè)置timeout的幾種常用方式說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • 利用EasyPOI實(shí)現(xiàn)多sheet和列數(shù)的動(dòng)態(tài)生成

    利用EasyPOI實(shí)現(xiàn)多sheet和列數(shù)的動(dòng)態(tài)生成

    EasyPoi功能如同名字,主打的功能就是容易,讓一個(gè)沒見接觸過poi的人員就可以方便的寫出Excel導(dǎo)出,Excel導(dǎo)入等功能,本文主要來講講如何利用EasyPOI實(shí)現(xiàn)多sheet和列數(shù)的動(dòng)態(tài)生成,需要的可以了解下
    2025-03-03
  • java后臺(tái)接受到圖片后保存方法

    java后臺(tái)接受到圖片后保存方法

    在本篇文章里小編給大家整理了關(guān)于java后臺(tái)接受到圖片后怎么保存的相關(guān)知識(shí)點(diǎn),需要的朋友們參考學(xué)習(xí)下。
    2019-06-06

最新評(píng)論

滨州市| 类乌齐县| 元氏县| 营山县| 襄城县| 准格尔旗| 彩票| 武威市| 涿州市| 平江县| 连州市| 黑水县| 来安县| 察隅县| 方山县| 增城市| 孟州市| 萨迦县| 厦门市| 郴州市| 宜川县| 内黄县| 儋州市| 霍州市| 太原市| 柳林县| 岑溪市| 通许县| 沅陵县| 邛崃市| 景泰县| 庆城县| 息烽县| 原平市| 新蔡县| 乃东县| 方城县| 安图县| 双流县| 扎兰屯市| 科技|