Spring Cloud(微服务)学习篇(五)
1 nacos配置文件的读取
1.1 访问localhost:8848/index.html并输入账户密码后进入nacos界面并点击配置列表

1.2 点击右侧的+号

1.3 点击加号后,进入新建配置界面,并做好如下配置

1.4 往下翻动,点击发布按钮

1.5 发布成功后的界面

1.6 在pom.xml(shop-user-server项目)中加入依赖
1.6.1 加入所需要导入的依赖
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency>
1.6.2 完整的pom.xml文件内容
<?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>shop-user</artifactId><groupId>com.zlz</groupId><version>1.0</version></parent><modelVersion>4.0.0</modelVersion><artifactId>shop-user-server</artifactId><dependencies><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><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>com.zlz</groupId><artifactId>shop-sms-api</artifactId><version>1.0</version></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency></dependencies></project>
1.7 变更application.yml文件
1.7.1 加入的部分
config:server-addr: 127.0.0.1:8848 #配置中心地址
1.7.2 完整的application.yml代码
server:port: 8010
spring:application:name: shop-user cloud:nacos:server-addr: 127.0.0.1:8848 config:server-addr: 127.0.0.1:8848
1.8 变更UserController类
1.8.1 加入的部分
@Value("${jdbc.username}")private String yhm;@Value("${jdbc.password}")private String password;@RequestMapping("config")public String config(){return "读取的用户名: "+yhm+" ,密码:"+password;}
1.8.2 完整的UserController类代码
package com.zlz.controller;import com.zlz.shop.sms.api.dto.SmsDTO;
import com.zlz.shop.sms.api.service.SmsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;@RestController
public class UserController {@AutowiredRestTemplate restTemplate;@RequestMapping("test")public String t(){String s=restTemplate.postForObject("http://shop-sms/send", null, String.class);
return "用户服务调用短信服务 结果:"+s;}@AutowiredSmsService smsService;@RequestMapping("test2")public String t2(){String s=smsService.send();return "用户服务调用短信服务 结果:"+s;}@RequestMapping("test3")public String t3(String tel){SmsDTO smsDTO = new SmsDTO();smsDTO.setTel(tel);String s=smsService.send2(smsDTO);return "用户服务调用短信服务 结果:"+s;}@Value("${jdbc.username}")private String yhm;@Value("${jdbc.password}")private String password;@RequestMapping("config")public String config(){return "读取的用户名: "+yhm+" ,密码:"+password;}
}
1.9 三种情况
1.9.1 更新配置文件后读取内容不刷新
a 启动用户服务

b 第一次访问127.0.0.1:8010/config地址

c 更改配置文件中的usename为zhangsan并点击发布按钮

d 再次访问127.0.0.1:8010/config地址

1.9.2 更新配置文件后读取内容刷新(实时读取最新的配置)
a 变更UserController类
a.1 加上如下注解
@RefreshScope
a.2 完整的UserController类代码
package com.zlz.controller;import com.zlz.shop.sms.api.dto.SmsDTO;
import com.zlz.shop.sms.api.service.SmsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;@RestController
@RefreshScope
public class UserController {@AutowiredRestTemplate restTemplate;@RequestMapping("test")public String t(){String s=restTemplate.postForObject("http://shop-sms/send", null, String.class);
return "用户服务调用短信服务 结果:"+s;}@AutowiredSmsService smsService;@RequestMapping("test2")public String t2(){String s=smsService.send();return "用户服务调用短信服务 结果:"+s;}@RequestMapping("test3")public String t3(String tel){SmsDTO smsDTO = new SmsDTO();smsDTO.setTel(tel);String s=smsService.send2(smsDTO);return "用户服务调用短信服务 结果:"+s;}@Value("${jdbc.username}")private String yhm;@Value("${jdbc.password}")private String password;@RequestMapping("config")public String config(){return "读取的用户名: "+yhm+" ,密码:"+password;}
}
b 启动nacos

c 启动用户服务

d 第一次访问127.0.0.1:8010/config地址

e 更改配置文件中的usename为lisi,并点击发布按钮

f 再次访问127.0.0.1:8010/config地址

1.9.3 读取指定配置文件的内容
a 新建一个配置shop-user-dev
a.1 点右边的加号,进入新建配置界面,然后填写相关信息

a.2 往下翻,点击发布按钮

b 更改application.yml(shop-user-server项目)
b.1 加入如下代码
profiles:active: dev #环境,不写读取的就是无环境配置文件 如shop-user.properties,加了啥就会读取啥
b.2 完整的application.yml代码
server:port: 8010 #801开头 表示用户集群 用户服务
spring:application:name: shop-user #项目名称 作为微服务名cloud:nacos:server-addr: 127.0.0.1:8848 #注册中心地址config:server-addr: 127.0.0.1:8848 #配置中心地址profiles:active: dev #环境,不写读取的就是无环境配置文件 如shop-user.properties,加了啥就会读取啥
c 重新启动用户服务

d 访问127.0.0.1:8010/config地址后
