1、Nacos 配置中心
在 SpringCloud 中,我们使用了 Config 组件管理所有配置文件,使用了 Bus 消息总线更新配置,两者需要配合使用才能动态的管理配置文件。而 Nacos 可以替代这两个组件,实现动态的管理所有配置文件。
2、快速入门
2.1、添加配置文件
想要管理配置,先要有配置文件。在使用 Config 组件管理配置文件时,需要将配置文件 GitHub 或者 Gitee 中。当使用 Nacos 做配置中心的时候可以直接使用 Nacos Server 中添加配置文件。
配置文件的 DataId 一定要以${prefix}-${spring.profiles.active}.${file-extension}
为格式,因为当服务通过 Nacos 获取配置文件时,也是以这个格式来寻找配置文件的。
-
prefix
:表示服务的名称 -
active
:表示服务的开发环境(用于区分开发环境,测试环境、生产环境等) -
file-extension
:表示配置文件的后缀
知道了配置文件的命名方式,我们就可以创建一个配置文件,并填写一定的内容。
2.2、配置的获取
在创建完配置文件之后,我们就可以通过具体的服务实现动态获取配置文件。具体步骤如下:
-
引入依赖:引入 Nacos 有关配置中心的依赖
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency>
-
添加配置文件:配置文件一定要以
bootstrap.yml
为名称server: port: 3270 spring: application: name: nacos-config-client profiles: active: dev #开发环境,这里是dev cloud: nacos: discovery: server-addr: localhost:8848 #配置Nacos地址 config: server-addr: localhost:8848 #Nacos作为配置中心地址 file-extension: yaml # 文件后缀名
配置文件中添加了三个配置:
spring.profiles.active
表示当前开发环境spring.cloud.nacos.config.server-addr
表示配置文件的地址spring.cloud.nacos.config.file-extension
表示获取的配置文件的后缀将 name 、active 和 file-extension 按照
${prefix}-${spring.profiles.active}.${file-extension}
格式结合起来就是需要获取的配置文件的名称。 -
编写业务类:
@RestController @RefreshScope //该注解使当前类下的配置支持Nacos的动态刷新功能。 public class OrderController { @Value("${server.port}") public String port; @Value("${nacos.info}") public String info; @GetMapping(value = "/nacos/order/{id}") public String getOrder(@PathVariable("id") Integer id){ return "查询订单"+id+",当前端口号为:"+port+","+info; } }
-
添加启动类:
@EnableDiscoveryClient @SpringBootApplication public class OrderMain3270 { public static void main(String[] args) { SpringApplication.run(OrderMain3270.class, args); } }
然后启动服务,访问http://localhost:3270/nacos/order/1
地址,可以得到如下页面:
上述代码可以完成从 Nacos 中获取配置信息,并且通过@RefreshScope
注解已经实现了自动更新,除了这种方式还有另外一种方式自动更新:
@Component
@Data
@ConfigurationProperties(prefix = "nacos")
public class UpdateProperties {
public String info;
}
然后在业务类中去掉@RefreshScope
注解,并修改代码:
@RestController
public class OrderController {
@Value("${server.port}")
public String port;
@Autowired
private UpdateProperties updateProperties;
@GetMapping(value = "/nacos/order/{id}")
public String getOrder(@PathVariable("id") Integer id){
return "查询订单"+id+",当前端口号为:"+port+","+updateProperties.info;
}
}
两种方式完成自动更新:通过@Value
注解和@RefreshScope
注解完成自动更新,通过@ConfigurationProperties
注解注完成自动更新,一般推荐使用第二种方式。
3、配置文件分类
上述过程中,我们通过 Nacos 完成了一个配置文件的获取。但是在实际开发中,一个微服务项目只是要经过开发、测试、生产环境三个步骤。这三个步骤可能使用的配置文件都不相同,所以 Nacos 可以通过命名空间、配置分组、配置文件的DataID 这三种方式来将配置文件分类。
- 配置文件的DataID是有三部分组成
${prefix}-${spring.profiles.active}.${file-extension}
,我们可以控制 active 属性的值将配置分类 - 配置分组,是将配置文件放在不同组中。就类似于 Java的报名,在Java中不同包下(不同的分组),可以有同名的类(同名的配置文件)
- 命名空间,在使用 Nacos 的注册中心功能时有提到过。
命名空间通过 Nacos Server 进行创建,如下图:
分组和配置文件的DataID,是在创建配置文件时指定的:文章来源:https://www.toymoban.com/news/detail-426427.html
然后需要修改配置文件的内容,以获取到不同命名空间,不同分组和不同 DataID 的配置文件:文章来源地址https://www.toymoban.com/news/detail-426427.html
cloud:
nacos:
discovery:
server-addr: localhost:8848 #Nacos服务注册中心地址
config:
server-addr: localhost:8848 #Nacos作为配置中心地址
file-extension: yaml #这里我们获取的yaml格式的配置
namespace: 5973c734-0625-47b3-8ae8-5db216d70e10
group: dev_GROUP
到了这里,关于【微服务SpringCloud-Alibaba】:Nacos 配置中心的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!