个人名片:
博主:酒徒ᝰ.
个人简介:沉醉在酒中,借着一股酒劲,去拼搏一个未来。
本篇励志:三人行,必有我师焉。
本项目基于B站黑马程序员Java《SpringCloud微服务技术栈》,SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
【SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 点击观看
目录
一、统一配置管理
1.启动nacos
在nacos的bin目录下,鼠标在空白处右击,在终端打开。
输入指令:.\startupup.cmd -m standalone
2.nacos添加
按照下图进行添加即可。
3.IDEA 操作
- 引入依赖
nacos中配置的是userservice-dev.yaml,所有以下操作在user-service模块中进行。
<!--nacos配置管理依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
- bootstrap.yml文件
spring:
application:
name: userservice # 服务名称
profiles:
active: dev # 环境
cloud:
nacos:
server-addr: localhost:8848 # nacos地址
config:
file-extension: yaml # 文件后缀名
- 属性注入
package cn.itcast.user.web;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
@RestController
@RequestMapping("/user")
public class UserController {
@Value("${pattern.dateformat}")
private String dateformat;
@GetMapping("/now")
public String now(){
return LocalDateTime.now().format(
DateTimeFormatter.ofPattern(properties.getDateformat())
);
}
/*
省略...
*/
}
4.测试
- 访问路径
http://localhost:8081/user/now
- 访问结果
二、热更新
此时,当我们修改nacos中的配置上,还需要重新启动服务才可以生效。
目的:我们需要修改nacos中的配置后,直接生效。
方法一:在controller类中直接加入@RefreshScope注解
import org.springframework.cloud.context.config.annotation.RefreshScope;
@RefreshScope
public class UserController {
//...省略
}
方法二:使用@ConfigurationProperties注解
1.创建一个新的模块config并在其中创建新的类PatternProperties。
2.PatternProperties类中写入代码
package cn.itcast.user.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Data
@Component
@ConfigurationProperties(prefix = "pattern")
public class PatternProperties {
private String dateformat;
}
3.修改Controller中的代码,前面创建PatternProperties类后,将nacos的配置移入新的类中,这里需要调用新的类来获取,便于热更新。
package cn.itcast.user.web;
import cn.itcast.user.config.PatternProperties;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
@Slf4j
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private PatternProperties properties;
@GetMapping("/now")
public String now(){
return LocalDateTime.now().format(
DateTimeFormatter.ofPattern(properties.getDateformat())
);
}
}
三、多环境配置共享(简略)
优先级:[服务名]-[profile].[yaml] > [服务名].[yaml] > [本地配置]
1.创建共享nacos配置
此时,无论**[服务名]-[profile].[yaml]中的profile如何改变,[服务名].[yaml] **一定会加载。
- 修改profile
在需要修改的service上右键选择Edit
在Active profiles中输入修改后的profile值。
2.设置共享配置
1.方法一:extension-configs
spring:
cloud:
nacos:
config:
extension-configs:
- extend.yaml
2.方法二:shared-configs
spring:
cloud:
nacos:
config:
shared-configs:
- common.yaml
四、集群搭建
五、异常解决
1.未启动nacos服务器,报Connection refused: connect异常,如下。
按照正确操作启动nacos即可。