SpringBoot3 集成 Nacos

如果需要學(xué)習(xí)更多SpringCloud Alibaba的集成使用

這個項(xiàng)目可以幫助你快速的啟動一個基于SpringCloud Alibaba技術(shù)棧的微服務(wù)框架搭建
基于SpringCloud Gateway的網(wǎng)關(guān)系統(tǒng),包括:認(rèn)證、鑒權(quán)、路由、負(fù)載均衡、流控等
基于AntDesignPro的登錄,包括用戶名密碼登錄、短信驗(yàn)證碼登錄,實(shí)現(xiàn)了圖形驗(yàn)證碼防刷功能
Nacos負(fù)責(zé)服務(wù)注冊、配置管理
Sentinel負(fù)責(zé)流量控制、熔斷降級、系統(tǒng)負(fù)載等多個維度保護(hù)服務(wù)的穩(wěn)定性
Seata負(fù)責(zé)分布式事務(wù)管理
前端使用了AntDesignPro框架,參考這個項(xiàng)目,你可以快速的開啟集成開發(fā)
基于 SpringBoot3 項(xiàng)目更容易集成到多個平臺(K8S、Istio)
演示了如何通過starter擴(kuò)展功能(Doc、Route)
演示了如何統(tǒng)一控制接口規(guī)范
演示了如何規(guī)范異常處理
演示了如何規(guī)范使用Mybaits、Mybatis-Plus、分頁
演示了單元測試、mock測試、測試數(shù)據(jù)回滾,包括對controller、service的測試
項(xiàng)目分包明確,規(guī)范微服務(wù)的開發(fā)模式,使包與包之間的分工清晰
鏈路追蹤
ES日志管理

請參考:SpringCloud Alibaba Micro Service System

本文為了簡單易學(xué),只演示如下功能:

  • 使用Nacos進(jìn)行配置管理
  • 使用Nacos進(jìn)行服務(wù)注冊

本文源碼

https://gitee.com/bestaone/study/tree/master/springboot3-nacos

環(huán)境依賴

  • JDK 17+
  • Nacos 2.2.0+
  • SpringBoot 3
  • SpringCloud 2022.0.0
  • SpringCloud Alibaba 2022.0.0.0-RC1

安裝 Nacos

安裝包安裝運(yùn)行

# 下載安裝包
>wget https://github.com/alibaba/nacos/releases/download/2.2.0/nacos-server-2.2.0.tar.gz
# 解壓
>tar -zxvf nacos-server-2.2.0.tar.gz -C /usr/local/
# 配置文件在 conf/application.properties
>cd /usr/local/nacos
# 啟動
>./bin/startup.sh -m standalone

Docker安裝運(yùn)行

>docker run -d \
  -e MODE=standalone \
  -e JVM_XMS=256m -e JVM_XMX=256m \
  -e PREFER_HOST_MODE=hostname \
  -p 8848:8848 -p 9848:9848 -p 9849:9849 \
  --privileged=true \
  --restart=always \
  --name nacos-2.2.0 \
  nacos/nacos-server:v2.2.0

Docker+MySQL安裝運(yùn)行

  • MySQL數(shù)據(jù)庫中創(chuàng)建nacos庫,并執(zhí)行如下腳本
springboot3-nacos/nacos-2.0.0-mysql-schema.sql
  • 執(zhí)行啟動腳本
>docker run -d \
  -e MODE=standalone \
  -e JVM_XMS=256m -e JVM_XMX=256m \
  -e PREFER_HOST_MODE=hostname \
  -e SPRING_DATASOURCE_PLATFORM=mysql \
  -e MYSQL_SERVICE_HOST=127.0.0.1 \
  -e MYSQL_SERVICE_PORT=3306 \
  -e MYSQL_SERVICE_USER=root \
  -e MYSQL_SERVICE_PASSWORD=123456 \
  -e MYSQL_SERVICE_DB_NAME=nacos \
  -p 8848:8848 -p 9848:9848 -p 9849:9849 \
  --privileged=true \
  --restart=always \
  --name nacos-2.2.0 \
  nacos/nacos-server:v2.2.0

驗(yàn)證

項(xiàng)目代碼

創(chuàng)建一個基礎(chǔ)的SpringBoot項(xiàng)目

  • pom.xm
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.bestaone.study</groupId>
    <artifactId>springboot3-nacos</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot3-demo</name>
    <description>demo</description>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <spring-boot.build-image.imageName>springboot3demo</spring-boot.build-image.imageName>
    </properties>

    <dependencyManagement>
        <dependencies>
            <!-- SpringCloud -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>2022.0.0</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!-- SpringBoot -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>3.0.0</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!-- SpringCloudAlibaba -->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2022.0.0.0-RC1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <!-- 使用bootstrap.yml必須依賴此類 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.graalvm.buildtools</groupId>
                <artifactId>native-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>
  • 啟動類Starter
@SpringBootApplication
public class Starter {

    public static void main(String[] args) {
        SpringApplication.run(Starter.class, args);
    }

}
  • HomeController
@RestController
public class HomeController {

    @Value(value = "${test.name:LiSi}")
    private String name;

    @RequestMapping("/")
    String home() {
        return "Hello " + name;
    }

}
  • 配置文件bootstrap.yml
spring.application.name: springboot3-nacos
test.name: WangWu

啟動項(xiàng)目驗(yàn)證

>curl --location --request GET 'http://127.0.0.1:8080'
Hello WangWu

添加集成Nacos所需的依賴

<!--注冊中心客戶端-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!--配置中心客戶端-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

調(diào)整代碼,只需在啟動類上添加注解@EnableDiscoveryClient

@EnableDiscoveryClient
@SpringBootApplication
public class Starter {

    public static void main(String[] args) {
        SpringApplication.run(Starter.class, args);
    }

}

調(diào)整配置文件bootstrap.yml

spring.application.name: springboot3-nacos
test.name: WangWu

spring.cloud.nacos.config:
  # 換成自己nacos服務(wù)器地址
  server-addr: nacos-server:8848
  file-extension: yml
  shared-configs:
    - application-common.yml
    - application-redis.yml
  namespace: sams

spring.cloud.nacos.discovery:
  server-addr: nacos-server:8848
  namespace: sams

添加Nacos配置

  • Nacosnamespace中添加 sams
  • namespace sams下創(chuàng)建配置文件application-common.yml,并添加配置
test.name: ZhangSan

測試驗(yàn)證

  • 測試接口
>curl --location --request GET 'http://127.0.0.1:8080'
Hello ZhangSan
# 此配置已經(jīng)能夠從Nacos中獲取了
  • 查看Nacos服務(wù)列表
Nacos服務(wù)列表

更多案例:SpringCloud Alibaba Micro Service System

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容