版本說明
由於我之前的eblog單機版本的springboot版本為2.1.4,所以之后的所有的項目都以該項目版本為基礎。
我們打開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文件
最終的文件目錄為下圖:
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模塊項目
打開nacos管理面板,打開服務列表,如下圖所示,則代表注冊成功