微服务服务之间远程调用的几种方式(RestTemplate、Eureka、Nacos、feign) 您所在的位置:网站首页 地图的模式有几种 微服务服务之间远程调用的几种方式(RestTemplate、Eureka、Nacos、feign)

微服务服务之间远程调用的几种方式(RestTemplate、Eureka、Nacos、feign)

2023-07-29 01:34| 来源: 网络整理| 查看: 265

在nacos首页【配置管理】-【配置列表】-点击+号添加配置,然后在弹出的表单中,填写配置信息:

Data ID: userservice-dev.properties Group: DEFAULT_GROUP 描述:开发环境配置 配置格式:properties 配置内容:pattern.dateformat=yyyy-MM-dd HH:mm:ss

注意:项目的核心配置,需要热更新的配置才有放到nacos管理的必要。基本不会变更的一些配置还是保存在微服务本地比较好。

微服务要拉取nacos中管理的配置,并且与本地的application.yml配置合并,才能完成项目启动。

但如果尚未读取application.yml,又如何得知nacos地址呢?

因此spring引入了一种新的配置文件:bootstrap.yaml文件,会在application.yml之前被读取,流程就是在项目启动时会读取先bootstrap.yaml和nacos上的配置信息,并整合到项目中,读取application.properties文件,创建spring容器并加载bean。

首先,在user-service服务中,引入nacos-config的客户端依赖:

   com.alibaba.cloud    spring-cloud-starter-alibaba-nacos-config

然后,在user-service中添加一个bootstrap.properties文件,内容如下:

spring.application.name=userservice spring.profiles.active=dev spring.cloud.nacos.server-addr=localhost:8848 spring.cloud.nacos.config.file-extension=properties

这里会根据spring.cloud.nacos.server-addr获取nacos地址,再根据

${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}作为文件id,来读取配置。

在user-service中的UserController中添加业务逻辑,读取pattern.dateformat配置:

@Value("${pattern.dateformat}") private String dateformat;     @GetMapping("now") public String now(){    return LocalDateTime.now().format(DateTimeFormatter.ofPattern(dateformat)); }

我们最终的目的,是修改nacos中的配置后,微服务中无需重启即可让配置生效,也就是配置热更新。

使用@ConfigurationProperties注解代替@Value注解。

在user-service服务中,添加一个类,读取patterrn.dateformat属性:

package cn.itcast.user.config; ​ import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; ​ @Component @Data @ConfigurationProperties(prefix = "pattern") public class PatternProperties {    private String dateformat; }

修改UserController的业务逻辑

@Autowired private PatternProperties patternProperties; ​ @GetMapping("now") public String now(){    return LocalDateTime.now().format(DateTimeFormatter.                                      ofPattern(patternProperties.getDateformat())); }

配置共享:创建配置时,将Data ID设置为 服务名.properties 即可。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有