Spring Cloud Alibaba項目構建(一)


版本說明

由於我之前的eblog單機版本的springboot版本為2.1.4,所以之后的所有的項目都以該項目版本為基礎。

sWb0ld.png

我們打開spring官網里面的spring cloud alibaba的api界面,這里我選擇的是2.1.2版本 spring cloud 是GreenwichSR5版本

Spring Cloud Version Spring Cloud Alibaba Version Spring Boot Version
Spring Cloud Hoxton.SR3 2.2.1.RELEASE 2.2.5.RELEASE
Spring Cloud Hoxton.RELEASE 2.2.0.RELEASE 2.2.X.RELEASE
Spring Cloud Greenwich 2.1.2.RELEASE 2.1.X.RELEASE
Spring Cloud Finchley 2.0.2.RELEASE 2.0.X.RELEASE
Spring Cloud Edgware 1.5.1.RELEASE 1.5.X.RELEASE

項目構建

由於我們搞的是微服務,所以首先要有一個父工程來規定依賴版本

我們首先創建一個maven工程,將packaging設置成pom

下面是我的父工程的pom示例


<?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>com.cloud</groupId>
    <artifactId>eblog</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>pom</packaging>
    <description>eblog父項目</description>



    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
        <maven.compiler.source>${java.version}</maven.compiler.source>
        <maven.compiler.target>${java.version}</maven.compiler.target>
        <spring.cloud.alibaba.version>2.1.0.RELEASE</spring.cloud.alibaba.version>
        <spring.cloud.version>Greenwich.SR5</spring.cloud.version>

    </properties>


    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.4.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <dependencyManagement>

        <dependencies>
             <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring.cloud.alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring.cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            

        </dependencies>
    </dependencyManagement>


    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

與nacos整合

建議查看nacos官方網站springcloud整合的官方文檔

保證首先將nacos服務打開,如果沒有安裝請查看博客內相關安裝教程

首先我們創建一個名字為provider的模塊用來注冊(其實正常項目中所有的項目大部分都是注冊到注冊中心的,這里只是為了演示,只寫了一個模塊),創建pom文件

最終的文件目錄為下圖:

sfew9g.png

nacos jar包說明

  • config 配置中心
    通過搜索文章我發現有 nacos ...config依賴,經過查詢發現,這是一個nacos服務中的一個動態配置的東西,相當於咱們的springboot中的application.yml這樣一個東西。但是我們知道,修改application不是得重啟springboot么,這樣太麻煩了,所以config可以動態修改里面的東西。
  • discovery 服務注冊/發現

總的來說,我們做微服務肯定會有服務注冊和發現的,這個就是來做這個的。

pom文件

並且在父工程中的pom里面寫入下面的,如果ide自動生成則無視:

<modules>
        <module>provider</module>
</modules>

provider文件中的pom為下面所示:

<?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">
    <parent>
        <artifactId>eblog</artifactId>
        <groupId>com.cloud</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>provider</artifactId>

    <dependencies>
        <!--nacos discovery依賴-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

</project>

啟動類

我們spring boot項目需要程序入口:

創建上圖中的文件目錄,並創建java文件
源代碼如下:

package com.cloud.demo.provider;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

/**
 * Created with IntelliJ IDEA.
 * User: WHOAMI
 * Time: 2021 2021/1/20 20:36
 * Description: 項目啟動入口
 */
@SpringBootApplication
@EnableDiscoveryClient
public class ProviderApplication {
    public static void main(String args[]){
        SpringApplication.run(ProviderApplication.class,args);
    }
}

  • SpringBootApplication 注解是springboot的掃描類
  • EnableDiscoveryClient 注解是nacos掃描類

控制層

我隨便寫一個controller的demo


package com.cloud.demo.provider.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

/**
 * Created with IntelliJ IDEA.
 * User: WHOAMI
 * Time: 2021 2021/1/20 20:42
 * Description: 測試控制層
 */
@RestController

public class DemoContoller {

    @GetMapping(value = "/demo/{string}")
    public String demoTesting(@PathVariable("string") String string){
        return "hello" + string;
    }
}

resources文件

resources文件中的application.yml文件:

spring:
  application:
    name: demo-provider
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.3.10:8848
        # 這里面的nacos地址是你自己的nacos-server的地址
server:
  port: 8081



測試

首先啟動這個provider模塊項目

訪問網址並成功返回內容:
sfm3PU.png

打開nacos管理面板,打開服務列表,如下圖所示,則代表注冊成功

sfmtM9.png


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM