springcloud读取本地配置文件|Spring Cloud-Nacos配置管理

❶ Spring Cloud-Nacos配置管理

前置文章: 一、Spring Cloud-Erueka服务注册&发现 二、Spring Cloud-Nacos服务注册&发现

tips:Ctrl + F定位到所需内容快速阅读吧。

①常规项目:项目启动→读取application.yml配置文件→创建Spring IOC容器→加载Bean; ②Nacos配置中心项目:项目启动→读取Nacos配置中心文件→读取application.yml配置文件→创建Spring IOC容器→加载Bean; 注意 :此处的问题是Nacos server-addr相关配置在application.yml中,所以引入bootstrap.yml配置,来提前加载Nacos配置中心所需配置。 ③Nacos配置中心项目:项目启动→读取bootstrap.yml配置文件→读取Nacos配置中心文件→读取application.yml配置文件→创建Spring IOC容器→加载Bean;

注意 :SpringCloud2020及以后的版本默认不启用 bootstrap 配置,我们需要在pom里面显式地引入,以开启bootstrap.yml配置文件读取的支持。

user服务读取配置中心配置三要素: ①spring-application-name:应用名称-userservice; ②spring-profiles-active:配置文件环境-dev(代表开发环境develop); ③file-extension:文件扩展名-yaml; 配置中心处,配置文件完整名称:userservice-dev.yaml

①配置管理→配置列表→➕

②编写userservice-dev.yaml配置文件

①@Value注解注入配置属性

②方法内读取配置

在对应的@Value注解使用的类上使用@RefreshScope注解

编写Config类:prefix = “pattern” + [field] dateformat,与配置文件pattern.dateformat 对应即可。

配置优先级 :[spring-application-name][spring-profiles-active][file-extension]>[spring-application-name][file-extension]>本地配置; 即:服务名-环境类型.yaml>服务名.yaml>本地配置。 如果配置不同,则合并,相同则优先级高的覆盖优先级低的。

另外:extension-configs的加载后于shared-configs。

以上即为Nacos配置管理的基础内容,感谢阅读。

❷ SpringBoot配置文件存放位置以及读取顺序

默认情况下,我们可以将application.properties或者application.yaml(为了方便演示,本文以下均以application.properties介绍)放置在如下四处: 1.1、idea中,为了我们本地方便开发测试,我们在此处创建一个config目录,然后把application.properties放进去,项目正常运行。jar包会自动生成在target目录下。 我们将生成的jar包,复制出来,到另外文件夹进行运行,比如,我现在该jar包复制到test目录下,但是这个时候是起不来,因为没有配置文件,虽然我们在idea里面是有config目录的,但是它并不没有被打包进去。我们要把config目录也复制过来,跟该jar包放在同一个目录下。 在此处,我们可以使用java -jar demo-0.01-SNAPSHOT来运行项目。 正常运行。 当我们将其打成jar包时,application.properties同样不会被打包进jar包中。需要另外复制出来和jar包放在才能正常运行。 推荐以上两种方式来放置配置文件,如果不写开发,测试,和生产好几套环境配置文件的话,就可以直接打开配置文件,改成自己需要的配置即可。 以下两种方式是将该配置文件打包在jar包里面了,即便只改一个端口号,开发人员先改配置文件,再打包,再运行。此处也记录下,并解开jar包,看下该配置文件被打包后,放置的位置。 打包后,如下图,jar包再target里面,我们寻找下application.properties文件。为了方便演示,我们将target目录下的demo-0.0.1-SNAPSHOT.jar放到一个新目录给它解压开,找下该配置文件,我放置到了一个test目录下。 解压后:如下图,我们进入目录 发现config目录被放置在classes目录下。然后这也就让我们明白了,什么是classpath?classpath的路径到底指的是哪里,在idea中我们就把它放置在resource目录,该目录就是表示classpath。而被打成jar包后classes目录就是所谓的classpath。 所有的yaml文件,同理。

❸ 使用 IDEA 从 0 开始搭建 Spring Cloud 微服务

以下内容均来源于一个微服务初学者的实践,仅供参考。 首先启动 Spring Cloud Eureka 注册中心,其他部分都作为服务注册到 Eureka ,并通过注册的服务名互相访问。Spring Cloud Config 提供统一的配置信息,供其他服务读取。Provider 生产者服务不直接对外暴露,仅供 Consumer 消费者服务调用。用户通过 Spring Cloud Gateway 统一访问消费者服务。 首先创建一个空 Maven 项目,然后右键项目 -> New Mole ,选择继续创建空 Maven 模块或者使用 Spring Initializr 构建 Spring Cloud 模块。common模块用于存放公共的 lib ,如 、model 、util 等。config-dev 存放配置文件,上传到 git 之后供 Spring Cloud Config 读取。 除了少数像 Spring Cloud Config 、Spring Cloud Gateway 这种独立应用,大部分非空模块都需要添加 spring-boot-starter-web 构建 Web 应用。下图是使用 IDEA 的 Spring Initializr 快速构建新模块。 下面贴上详细的配置文件和注解,bootstrap.yml 具有高优先级,会提前加载并且不会被 application.yml 覆盖,spring.cloud.config 需要配置在 bootstrap.yml 中,否则不能正常从配置中心获取配置信息。 application.yml HobbyEurekaApplication.java application.yml application-dev.yml HobbyConfigApplication.java bootstrap.yml config-dev/gateway.yml HobbyGatewayApplication.java 在 Spring Cloud Gateway 的配置中已经展示过如何从 config-dev 配置仓库中读取配置文件。spring.cloud.config 和 eureka.client 都已经在 bootstrap.yml 中配置过,接下来不做赘述。多模块项目中扫描其他模块的 mybatis 文件需要做额外的配置。 application.yml HobbyProviderTestApplication.java 消费者调用生产者可以使用 Feign 声明式服务调用。 HobbyConsumerTestApplication.java TestFeignService.java TestServiceImpl.java Spring Cloud Eureka >> Spring Cloud Config >> Spring Cloud Gateway >> 其他服务 微服务架构能够将各种服务解耦,单独部署,配合 devops 才能展现出真正的威力,否则运维的工作会苦不堪言。gitlab 目前已经集成了 devops 功能,只要在项目中添加 .gitlab-ci.yml ,push 到 Gitlab 之后就会自动执行配置的命令,这里简单介绍一下 gitlab 的安装部署。 CentOS7 自带的 Git 版本号是 1.8.3.1 ,需要更新,否则 Gitlab Runner 在进行自动构建的时候会报错 fatal: git fetch-pack: expected shallow list ,更新步骤如下: Gitlab 安装官方文档 Gitlab Runner 安装官方文档 配置文件的地址 /etc/gitlab/gitlab.rb 修改配置文件的操作: 常用配置:

❹ springboot实现动态加载远程配置文件

有个独立的API项目,该项目主要是对外部各个系统提供API接口,为了保证调用的安全,需要对请求进行校验,主要校验包括调用频率,访问IP,是否跨域和Token,其中IP和是否跨域的配置会根据接入方进行相应的修改,为了避免每次有新的接入方就得去修改一次配置文件并重启项目,所以打算使用动态配置的方式。 初级实现方案:API服务每隔5分钟向管理端请求一次数据,管理端添加IP和域白名单的管理,这个实现方案,简单好用,但是弊端也明显,管理端每次修改完配置后,客户端需要等待下次请求后才会加载对应的配置,同时,还需要自己管理获取到的配置文件 更新方案:在springboot启动时,先从远端获取配置文件,并将其加载进Environment对象中,其余的,就都交给Spring了。同时配合spring-cloud-context实现远程配置变更后,本地重新拉取配置并更新点进去之后,springboot会在这里初始化ConfigurableEnvironment对象 这里是给ConfigurableEnvironment做一些初始化工作,我们先不管了,重点在这里,listeners.environmentPrepared(environment);,Springboot通过事件,将Environment的加载分发出去 到此为止,我们就能像使用本地配置文件一样使用服务器上的配置文件了,但是这里还只实现了加载远程配置文件,我们还需要在远程配置文件变更时,实现配置文件的热更新


赞 (0)