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.cloudgroupId>
<artifactId>spring-cloud-starter-alibaba-nacos-configartifactId>
dependency>
1.6.2 完整的pom.xml文件内容
<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-userartifactId>
<groupId>com.zlzgroupId>
<version>1.0version>
parent>
<modelVersion>4.0.0modelVersion>
<artifactId>shop-user-serverartifactId>
<dependencies>
<dependency>
<groupId>com.alibaba.cloudgroupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
<dependency>
<groupId>org.projectlombokgroupId>
<artifactId>lombokartifactId>
dependency>
<dependency>
<groupId>com.zlzgroupId>
<artifactId>shop-sms-apiartifactId>
<version>1.0version>
dependency>
<dependency>
<groupId>com.alibaba.cloudgroupId>
<artifactId>spring-cloud-starter-alibaba-nacos-configartifactId>
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 {
@Autowired
RestTemplate restTemplate;
@RequestMapping("test")
public String t(){
String s=restTemplate.postForObject("http://shop-sms/send", null, String.class);
return "用户服务调用短信服务 结果:"+s;
}
@Autowired
SmsService 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 {
@Autowired
RestTemplate restTemplate;
@RequestMapping("test")
public String t(){
String s=restTemplate.postForObject("http://shop-sms/send", null, String.class);
return "用户服务调用短信服务 结果:"+s;
}
@Autowired
SmsService 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地址后