Nacos中服务存储和数据存储的最外层都是一个名为namespace的东西,用来做最外层隔离。
Namespace:命名空间,常用于生产环境、开发环境的区分。
Group:组,常用将业务相关程度较高的放同一个组(订单和支付)。
创建:
获取ID:
将user-service中的8082端口修改环境,在application.yml中添加:
cloud:
nacos:
discovery:
namespace: 命名空间ID
namespace用来做环境隔离。
每个namespace都有唯一id。
不同namespace下的服务不可见 。
在userservice的pom.xml中引入Nacos的配置管理客户端依赖:
<! --nacos配置管理依赖-->
>
>com.alibaba.cloud >
>spring-cloud-starter-alibaba-nacos-config >
>
在userservice中的resource目录添加一个bootstrap.yml文件,这个文件是引导文件,优先级高于application.yml:
spring:
application:
name: userservice #微服务名称
profiles:
active: dev #开发环境,这里是dev
cloud:
nacos:
server-addr: localhost:8848 #nacos地址
config:
file-extension: yaml #文件后缀名
启动项目,查看是否能读取nacos中的配置文件:
@RestController
@RequestMapping("/user")
public class UserController {
@Value("${your.name}")
private String name;
@GetMapping("/name")
public String getName(){
return name;
}
}
使用@RefreshScope开启热更新:
@RefreshScope
@RestController
@RequestMapping("/user")
public class UserController {
@Value("${your.name}")
private String name;
@GetMapping("/name")
public String getName(){
return name;
}
}
使用@ConflgurationProperties注解,创建config层,包中类为:
@Component
@Data
@ConfigurationProperties(prefix = "your")
public class YourNameConfig {
private String name;
}
controller层:
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private YourNameConfig yourNameConfig;
@GetMapping("/name")
public String getName(){
return yourNameConfig.getName();
}
}
总结步骤:
在nacos中添加配置文件。
在微服务中引入nacos的config依赖。
在微服务中添加bootstrap.yaml,配置nacos地址、当前环境、服务名称、文件后缀名。这些决定了程序启动时去nacos读取哪个文件。
对use-service:8081:
获取nacos中的配置:
@Component
@Data
@ConfigurationProperties(prefix = "your")
public class YourNameConfig {
private String name;
private Integer age;
}
在页面显示:
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private YourNameConfig yourNameConfig;
@GetMapping("/name")
public YourNameConfig getName(){
return yourNameConfig;
}
}
对user-service:8082,修改bootstrap.yaml,将环境修改为测试环境:
spring:
application:
name: userservice #微服务名称
profiles:
active: test #测试环境,这里是test
cloud:
nacos:
server-addr: localhost:8848 #nacos地址
config:
file-extension: yaml #文件后缀名