文章目录
前言
如果你还没有学习OpenFeign可以看之前的博客微服务之hystrix熔断降级和负载均衡,本篇博客是接着上一篇写的。
nacos配置中心
nacos有两大块,一块是 注册中心
,另一块就是我们今天要学的 配置中心
。还不知道什么是注册中心的请看我之前的博客微服务之SpringCloud Alibaba(注册中心Nacos)
nacos同spring-cloud-config一样,可以作为一个配置中心,统一的来管理配置,可以配置多套环境,各个微服务可以按需到nacos配置中心拉取相关配置,且支持动态刷新@RefreshScope。
实现思路
RabbitMQ
我们将配置信息存入到nacos,然后在项目中创建config模块,然后使用RabbitMQ将配置信息推送到各个模块
若依的实现
我们微服务版的若依是将配置信息放到nacos,然后哪个模块使用就去调用。接下来演示这种方式。
实战
配置nacos
启动nacos
打开文件,路径上cmd回车。
输入指令。
bash
# 后缀standalone指的是以单例的方式进行启动
.\startup.cmd -m standalone

浏览器进入上面的路径,输入账号密码,账号密码都是nacos,登陆之后如下
创建命名空间
这个命名空间你可以想成一个文件夹,后面会在这个文件夹内添加配置文件。
注意:命名空间以后在开发中可以区分为 开发、测试、生产 等环境。
结果如下:
命名空间下创建配置文件
-
在test命名空间下 创建yaml文件
-
填写配置信息。
-
点击发布
-
点击确定
-
点击返回
-
结果如下
-
可以查看代码示例
-
选择SpringCloud
修改父级的pom文件
这个是dependencies标签,而不是dependencyManagement下的dependencies标签。
xml
<!--nacos配置中心-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- 引入bootstrap依赖 应用程序启动时加载boostrap配置文件 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
<version>3.1.4</version>
</dependency>
修改bill-provider-7780模块
创建bootstrap.yml文件
在resources下新建bootstrap.yml文件
yml
server:
port: 7780
spring:
application:
name: bill-provider-7780 # 服务名
cloud:
nacos:
discovery:
username: nacos
password: nacos
server-addr: 127.0.0.1:8848
config:
server-addr: 127.0.0.1:8848
file-extension: yaml # 配置文件格式
group: DEFAULT_GROUP # 配置分组
namespace: e0ee261e-6c1a-4db1-bf6f-bdfdce8f89d7 # 命名空间ID, 这个从nacos中复制
注意: 使用nacos作为配置中心时,需要创建一个bootstrap.yaml和
application.yaml两个配置文件,bootstrap.yaml的优先级高于
application.yaml,加载时实现加载bootstrap.yaml中的相关配置
修改application.yml
这里的nacos的配置信息可以去除了,因为已经放到bootstrap.yml
我们只需要激活dev环境即可
我们在最后引入mname和mpwd两个自定义属性看看是否能读取nacos中的配置。
只要能读取说明我们下面mysql的配置信息就能读取到nacos中的配置信息了。
读取nacos中的配置使用${属性名}
yml
#server:
# port: 7780
#spring:
# application:
# name: bill-provider-7780 # 服务名
# cloud:
# nacos:
# discovery:
# username: nacos
# password: nacos
# server-addr: 127.0.0.1:8848
spring:
profiles:
active: dev # 激活环境
# 数据库配置
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/smbms?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true
username: ${mysqlname} # 引入nacos中的mysql账号
password: ${mysqlpwd} # 引入nacos中的mysql密码
# mybatis-plus:
mybatis-plus:
mapper-locations: classpath:mappers/*.xml # 扫描mappers映射文件
type-aliases-package: com.hsh.pojo # 扫描别名
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 打印sql到控制台
map-underscore-to-camel-case: false # 关闭驼峰映射
mname: ${mysqlname} # 引入nacos中的mysql账号
mpwd: ${mysqlpwd} # 引入nacos中的mysql密码
创建TestConfig
在com/hsh/config文件下创建文件TestConfig,当项目启动时加载nacos中的属性
java
package com.hsh.billprovider7780.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class TestConfig {
@Value("${mname}")
private String mname;
@Value("${mpwd}")
private String pwd;
@Bean
public void show(){
System.out.println("mname:"+mname+"========"+"pwd:"+pwd);
}
}
启动bill-provider-7780模块

动态改变数据库的账号密码
所谓的动态改变数据库的账号密码,就是当我们编辑Nacos中的配置文件信息后,会同步更改代码中xml配置文件中的值
修改bill-provider-7780模块
创建IndexController文件
我们在com/hsh/billprovider7780文件下新建controller文件
在controller文件下新建IndexController类
java
package com.hsh.billprovider7780.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.context.annotation.Bean;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/index")
@RefreshScope // 开启动态刷新
public class IndexController {
@Value("${mname}")
private String mname;
@Value("${mpwd}")
private String pwd;
@GetMapping("/show")
public String show(){
return "mname:"+mname+"========"+"pwd:"+pwd;
}
}
测试
不修改nacos访问
先输入http://localhost:7780/index/show
进行访问
修改nacos配置
现在修改nacos中的密码
修改后再次访问
输入http://localhost:7780/index/show
进行访问
到此配置成功。
未完待续...
请看我的下一篇博客微服务之Gateway网关(1)