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 {
@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地址后