本文最后更新于263 天前,其中的信息可能已经过时,如有错误请发送邮件到qiqin-chang@qq.com
注册中心:
基础配置:
依赖:
<!--nacos 服务注册发现-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!--微服务web项目启动-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
配置:
服务注册:
spring:
application:
name: user-service # 服务名称
cloud:
nacos:
server-addr: localhost:8848 # nacos地址
服务发现:
在启动类上添加:
@EnableDiscoveryClient //开启服务发现功能
实现负载均衡的远程调用:
依赖:
<!--loadbalancer 负载均衡-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
注解式负载均衡:
@LoadBalanced //注解式负载均衡
配置类:
@Configuration
public class UserConfig {
@Bean
RestTemplate restTemplate() {
return new RestTemplate();
}
}
远程调用:
//基于注解的负载均衡
private Product getUserFromRemoteWithLoadBalanceAnnotation(Long id) {
//1.获取到商品服务所在的所有机器IP+port
String url = "http://user-service/user/" + Id; //根据服务名称自动负载均衡的匹配服务地址
//2.给远程发送请求
User user = restTemplate.getForObject(url, Product.class);
return user;
}
配置中心:
配置隔离:
常见SpringBoot环境:
- dev 开发环境
- test 测试环境
- prod 生产环境

添加共享配置:
在配置管理->配置列表中点击+新建一个配置:

在弹出的表单中填写信息:

拉取共享配置:
依赖:
<!--nacos 配置中心-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!--读取bootstrap文件-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
配置:
配置导入规则:先导入优先,外部导入优先
server:
port: 8000
spring:
profiles:
active: dev #激活某一环境
application:
name: user-service # 服务名称
cloud:
nacos:
server-addr: localhost:8848 # nacos地址
config:
import-check:
enabled: false #禁用导入检查
namespace: ${spring.profiles.active:public} #使用选定环境的命名空间中的配置 -选定默认值为public
#以下为不同开发环境配置
#开发环境
---
spring:
config:
activate:
on-profile: dev
import:
- nacos:common.yaml?group=order #按需加载对应组群的配置文件
- nacos:database.yaml?group=order
#测试环境
---
spring:
config:
activate:
on-profile: test
import:
- nacos:database.yaml?group=order
#生产环境
---
spring:
config:
activate:
on-profile: prod
import:
- nacos:common.yaml?group=order
配置自动刷新:
自动刷新:
类注解:
@RefreshScope
配置类成员变量注解:
@value
批量绑定自动刷新:
配置类注解:
@ConfigurationProperties
配置类方法:
@Component
@ConfigurationProperties(prefix = "user")//配置批量绑定在nacos下,可无需@RefreshScope实现自动刷新,以驼峰命名代替'-'格式
@Data
public class UserProperties {
String timeout;
String autoConfirm;
String dbUrl;
}
监听配置变化:
启动类方法:
//1.项目启动就监听配置文件的变化
//2.发生变化后拿到变化的值
//3.发送邮件
@Bean
ApplicationRunner applicationRunner(NacosConfigManager nacosConfigManager) {
return args -> {
ConfigService configService = nacosConfigManager.getConfigService();
configService.addListener("user-service.yaml",
"DEFAULT_GROUP",new Listener() {
@Override
public Executor getExecutor() {
return Executors.newFixedThreadPool(4);
}
@Override
public void receiveConfigInfo(String configInfo) {
System.out.println("变化的配置信息" + configInfo);
System.out.println("邮件通知...");
}
});
};
}