Spring-Cloud合集
第一篇:Spring-Cloud-Nacos:配置中心
第二篇:Spring-Cloud-Nacos:服务注册与发现
第三篇:Spring-Cloud-Nacos:负载均衡
第四篇:Spring-Cloud-Gateway:网关
第五篇:Spring-Cloud-Sentinel:Sentinel作为熔断器
项目源码:Spring-Cloud-Nacos
前言
Nacos可以实现分布式下的配置管理,可以动态的进行配置的更改。
正文
如果GitHub下载太慢,也可以去我的网盘上下载
链接:https://pan.baidu.com/s/1XI_ous59pz9um-9WSJWefg
提取码:l9k3
下载后解压,目录如下:
进入bin文件夹
可以看到启动与关闭脚本,.cmd后缀为windows下的脚本命令,.sh为MacOs下的脚本。
打开终端,运行脚本(注意:加入参数 -m standalone 表示在单机模式下启动)
#window下直接进入bin文件夹下,在目录上输入cmd启动终端,输入命令
startup.cmd -m standalone
#Mac同理,打开终端进入bin文件夹,执行命令
sh startup.sh -m standalone
出现以下界面说明启动成功,可以访问http://localhost:8848进入Nacos配置中心,初始账户密码为:nacos/nacos。
进入本地Nacos服务(http://localhost:8848/nacos),进行配置,要注意的是Data ID要与application.name相同,后缀.properties可加也可不加。但是配置的格式要与resource下的bootstrap文件相同。选择yaml格式的时候需要在bootstrap中配置spring.cloud.nacos.config.file-extension=yaml
启动Nacos服务后,开始构建项目,由于之后还有关于注册中心和负载均衡、网关等内容,因此我们建立一个多模块的Maven项目,新建Maven父模块Spring-Cloud-Nacos。
删除src文件
引入父依赖,Spring-Cloud版本为:2020.0.1、spring-boot版本为:2.4.2、spring-cloud-alibaba版本为:2021.1,更多版本对应信息参考: Spring-Cloud-Alibaba
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>2020.0.1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.4.2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2021.1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
新建子模块nacos-config(配置中心)
引入Nacos-Config子模块依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- 注意:Nacos官网文档并没有引入bootstrap依赖,但是高版本是需要的,不然会报错 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
</dependencies>
resource下新建配置文件:bootstrap.properties
server.port=8080
#必须配置application.name,这是nacos的data_id的一部分,不配置无法找到Nacos的配置文件
spring.application.name=nacos-config
#Nacos地址
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
#当配置文件格式为yaml时,需要进行如下配置(当前是.properties格式,故注释)
#spring.cloud.nacos.config.file-extension=yaml
#指定命名空间ID
#spring.cloud.nacos.config.namespace=***************
#本地配置,通过Nacos进行更改
user.name=ZhangSan
user.age=18
如果Nacos服务配置中新建了命名空间,并在命名空间下创建配置,那么bootstrap.properties中需要声明命名空间ID:
spring.cloud.nacos.config.namespace=***
新建启动类NacosConfigApplication
package com.king.config;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* @author TheKing
* @version 1.0
* @className ConfigApplication
* @description
* @date 2022/7/25 16:29
*/
@SpringBootApplication
public class NacosConfigApplication {
public static void main(String[] args) {
SpringApplication.run(NacosConfigApplication.class,args);
}
}
新建controller请求,添加 @RefreshScope 开启配置动态更新
package com.king.config.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author TheKing
* @version 1.0
* @className NacosConfigComtroller
* @description
* @date 2022/7/25 16:32
*/
@RestController
@RefreshScope
public class NacosConfigComtroller {
@Value("${user.name}")
String name;
@Value("${user.age}")
String age;
@GetMapping("/get")
public String getProperties(){
return "My name is:"+name+" ,age:"+age;
}
}
接着去到NacosConfigApplication启动类,启动项目
或者添加启动类配置启动项目
启动项目,访问http://localhost:8080/get,出现以下内容,代表成功覆盖了bootstrap.properties的内容。
可以更改Nacos中的配置并发布,测试动态更新是否生效。
再次访问http://localhost:8080/get,出现以下界面:
源码下载
TY-The-King’s GitHub
TY-The-King’s GitHub Blog
项目源码:Spring-Cloud-Nacos
更多Nacos的使用方法可到官网文档查看: Nacos官网