SpringCloud應(yīng)用idea實(shí)現(xiàn)可相互調(diào)用的多模塊程序詳解
版本選擇
學(xué)習(xí)spring cloud之前需要有一定的spring boot基礎(chǔ),按我現(xiàn)階段的了解就是,spring boot屬于是做業(yè)務(wù)開(kāi)發(fā)的,所謂的微服務(wù)就是將一個(gè)大的項(xiàng)目分為是很多的使用spring boot進(jìn)行開(kāi)發(fā)的單體項(xiàng)目。當(dāng)然如果沒(méi)有后續(xù)的話(huà),那么這一個(gè)項(xiàng)目也就成了一盤(pán)散沙,沒(méi)有辦法真正的實(shí)現(xiàn)它的作用,于是就需要使用spring cloud將所有的spring boot單體項(xiàng)目整合起來(lái),形成一個(gè)完整的項(xiàng)目,從而發(fā)揮它最大的作用。
既然在一個(gè)項(xiàng)目中涉及到了兩種框架技術(shù)的使用,那么就需要考慮這兩種框架會(huì)不會(huì)產(chǎn)生沖突。那么我們應(yīng)該如何查看這兩種框架的版本適用呢?我們可以參考spring cloud官網(wǎng)給出的答案,這個(gè)文檔是實(shí)時(shí)更新的,不用擔(dān)心過(guò)時(shí)的問(wèn)題。https://spring.io/projects/spring-cloud,打開(kāi)鏈接直接向下劃即可找到
官網(wǎng)在這里只是提供了一個(gè)相對(duì)模糊的版本對(duì)應(yīng),想要更加具體的版本對(duì)應(yīng)可以參考以下網(wǎng)站https://start.spring.io/actuator/info,將網(wǎng)站返回的JSON字符串經(jīng)過(guò)工具的轉(zhuǎn)換即可發(fā)現(xiàn)其中的版本對(duì)應(yīng)
當(dāng)然,上述兩種方法都是在boot和cloud技術(shù)版本選擇時(shí)的一種參考,真正確定下來(lái)還是要看cloud官網(wǎng)上面的參考doc文檔,點(diǎn)進(jìn)去的Supported Boot Version才是最終敲定的依據(jù)
技術(shù)選型
前面講到spring cloud是一個(gè)微服務(wù)的框架,既然是微服務(wù)就說(shuō)明我們需要使用技術(shù)控制各個(gè)單體服務(wù)之間的通信,還有不同服務(wù)的調(diào)用等。于是就涉及到了這些不同功能的技術(shù)選型,我們都知道技術(shù)是在不停迭代更新的,有很多的技術(shù)停更淘汰,與此同時(shí)也有很多的技術(shù)更新迭代出來(lái),于是我們應(yīng)該知道不同的功能應(yīng)該選用哪種可行的技術(shù)。
服務(wù)注冊(cè)中心:
- Eureka
- Zookeeper
- Consul
- Nacos √
服務(wù)調(diào)用:
- Ribbon
- LoadBalancer
- Feign
- OpenFeign √
服務(wù)降級(jí):
- Hystrix
- Resilience4j
- Sentinel √
服務(wù)網(wǎng)關(guān):
- Zuul
- Zuul2
- Gateway √
服務(wù)配置:
- Config
- Nacos √
服務(wù)總線(xiàn):
- Bus
- Nacos √
spring boot單體模塊的搭建
創(chuàng)建父工程
project項(xiàng)目創(chuàng)建
修改項(xiàng)目名 -> 修改項(xiàng)目存儲(chǔ)地址 -> 修改maven配置 -> finished
配置字符編碼格式
配置注解生效激活
配置項(xiàng)目的Java的版本
父工程的pom文件
父pom中的并不會(huì)引入相應(yīng)的jar包,而是定義了版本號(hào)供子模塊使用,只有子模塊導(dǎo)入依賴(lài)坐標(biāo)的時(shí)候(如果父pom中有,可以不指定版本號(hào))才會(huì)引入相應(yīng)的jar包
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>項(xiàng)目的組id</groupId> <artifactId>項(xiàng)目名稱(chēng)</artifactId> <version>項(xiàng)目版本</version> <packaging>pom</packaging> <!--統(tǒng)一管理設(shè)置jar包的版本--> <properties> .......... </properties> <!--依賴(lài)傳遞:父pom文件中的依賴(lài)版本會(huì)被子模塊自動(dòng)繼承,除非子模塊中自己聲明版本,否則就使用父pom的版本,同理,父pom的依賴(lài)版本升級(jí),子模塊也會(huì)升級(jí)到相應(yīng)的版本--> <dependencyManagement> <dependencies> <dependency> ....... </dependency> ...... <dependency> ....... </dependency> </dependencies> </dependencyManagement> </project>
創(chuàng)建子模塊
在父工程上右鍵,新建一個(gè)model
創(chuàng)建之后需要配置子模塊的配置文件,也就是子模塊的resources文件夾下的application.yml文件,主要就是配置端口號(hào)和數(shù)據(jù)庫(kù)相關(guān)
server:
port: 8001spring:
application:
name: cloud-payment-service
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: org.gjt.mm.mysql.Driver
url: …… ……… ………
username: …… ……
password: …… …… ……
mybatis:
mapper-locations: classpath:mapper/*.xml
type-aliases-package: com.xiaochen.springcloud.entities
然后就是創(chuàng)建相應(yīng)的mapper、service、serviceImpl、映射文件
RestTemplate
Rest Template就是一種對(duì)HTTPClient的封裝,是Spring提供的用于訪(fǎng)問(wèn)Rest服務(wù)的客戶(hù)端模板工具集,其內(nèi)部提供了多種便捷的用于訪(fǎng)問(wèn)遠(yuǎn)程http服務(wù)的方法,主要就是用于實(shí)現(xiàn)微服務(wù)項(xiàng)目中幾個(gè)服務(wù)之間的相互調(diào)用。
使用步驟
使用配置類(lèi)向容器中注入RestTemplate對(duì)象
/** * @ClassName: ApplicationContextConfig * @Description: 程序配置類(lèi) * @author: chenhao * @date: 2022/7/17 */ @Configuration public class ApplicationContextConfig { @Bean public RestTemplate getRestTemplate() { return new RestTemplate(); } }
在需要使用它的地方用@Resource注入對(duì)象,然后就是調(diào)用api實(shí)現(xiàn)相應(yīng)的功能,全部api參考以下鏈接:鏈接
系統(tǒng)重構(gòu)(子模塊間重復(fù)代碼的抽取)
創(chuàng)建一個(gè)公共模塊,將公共的代碼和依賴(lài)全部抽取到這個(gè)公共模塊中,然后別的模塊如果想要使用公共模塊的代碼,就必須先對(duì)公共模塊的maven進(jìn)行clean和install,然后在pom文件中導(dǎo)入這個(gè)公共模塊的依賴(lài)即可使用公共部分代碼
到此這篇關(guān)于SpringCloud應(yīng)用idea實(shí)現(xiàn)可相互調(diào)用的多模塊程序詳解的文章就介紹到這了,更多相關(guān)SpringCloud多模塊程序內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java字符串的大寫(xiě)字母右移實(shí)現(xiàn)方法
下面小編就為大家?guī)?lái)一篇java字符串的大寫(xiě)字母右移實(shí)現(xiàn)方法。小編覺(jué)得聽(tīng)不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-04-04

Netty分布式高性能工具類(lèi)同線(xiàn)程下回收對(duì)象解析

Maven依賴(lài)junit?@Test報(bào)錯(cuò)的解決方案

SpringBoot集成Redis的實(shí)現(xiàn)示例

SpringBoot +Vue開(kāi)發(fā)考試系統(tǒng)的教程

idea復(fù)制module(項(xiàng)目)并在一個(gè)窗口展示的教程詳解

淺談Java垃圾回收的實(shí)現(xiàn)過(guò)程