springcloud项目配置拓展从本地config目录加载

本文受阿里开源的Nacos启发,应用启动后从Nacos服务加载配置到应用中,想着本地开发的时候加载配置能否从本地存储中加载,这样也能加快开发效率

首先

我们来看下SpringCloud项目应用Nacos服务的bootstrap.yaml配置如下

spring:
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        file-extension: yaml
      discovery:
        server-addr: 127.0.0.1:8848
  application:
    name: demo
  profiles:
    active: db,redis,rabbit,es,zk

然后在Nacos控制台加配置

经过如上之后,这样应用就能从Nacos取配置。

问题点

笔者认为这里开发的时候如果能从文件系统中加载配置替代Nacos,能加快开发效率,也能心情舒畅的Coding业务代码了。

解决思路

分析

经过分析启动配置spring.factories和配置类NacosConfigProperties

org.springframework.cloud.bootstrap.BootstrapConfiguration=org.springframework.cloud.alibaba.nacos.NacosConfigBootstrapConfiguration

找到NacosConfigBootstrapConfiguration 代码如下

@Configuration
@ConditionalOnProperty(name = "spring.cloud.nacos.config.enabled", matchIfMissing = true)
public class NacosConfigBootstrapConfiguration {

    @Bean
    @ConditionalOnMissingBean
    public NacosConfigProperties nacosConfigProperties() {
        return new NacosConfigProperties();
    }

    @Bean
    public NacosPropertySourceLocator nacosPropertySourceLocator(
            NacosConfigProperties nacosConfigProperties) {
        return new NacosPropertySourceLocator(nacosConfigProperties);
    }

}

里面关键是NacosPropertySourceLocator实现的接口PropertySourceLocator

/**
 * Strategy for locating (possibly remote) property sources for the Environment.
 * Implementations should not fail unless they intend to prevent the application from
 * starting.
 *
 * @author Dave Syer
 *
 */
public interface PropertySourceLocator {

    /**
     * @param environment The current Environment.
     * @return A PropertySource, or null if there is none.
     * @throws IllegalStateException if there is a fail-fast condition.
     */
    PropertySource<?> locate(Environment environment);

}

到了这里就明白怎么做了。

具体请看我分享的git库https://github.com/lyg123/SpringCloudLocalCofigDemo

新的bootstarp.yaml配置如下

spring:
  cloud:
    nacos:
      config:
        enabled: false
        server-addr: 127.0.0.1:8848
        file-extension: yaml
      discovery:
        server-addr: 127.0.0.1:8848
  application:
    name: demo
  profiles:
    active: db,redis,rabbit,es,zk

这样应用启动配置能从本地文件系统加载或Nacos服务加载

原文地址:https://www.cnblogs.com/li-yg/p/11419732.html

时间: 2024-10-22 15:13:01

springcloud项目配置拓展从本地config目录加载的相关文章

win10通过Docker Toolbox安装docker及配置文件共享挂载本地磁盘目录

1.下载软件软件下载地址: http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/选择合适的版本,本次实验以下图为例:下载完成双击运行程序安装完成桌面会出现以下三个图标:双击"Docker Quickstart Terminal"弹出页面会显示正在下载boot2docker.iso镜像文件由于资源在github上,下载会非常非常慢,这里已经下载下来通过云盘共享一下(永久有效): 链接:https://pan.ba

SpringMVC项目中web.xml中的节点加载顺序问题

SpringMVC项目中web.xml中的节点加载顺序问题,之前以为web.xml中就是一些配置信息,和节点的顺序没有关系,后来才发现初始化时的加载顺序是和节点的顺序相关的. 完整的web.xml文件内容: <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns=&quo

配置Spring的用于解决懒加载问题的过滤器

<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://j

Bean 注解(Annotation)配置(1)- 通过注解加载Bean

Spring 系列教程 Spring 框架介绍 Spring 框架模块 Spring开发环境搭建(Eclipse) 创建一个简单的Spring应用 Spring 控制反转容器(Inversion of Control – IOC) 理解依赖注入(DI – Dependency Injection) Bean XML 配置(1)- 通过XML配置加载Bean Bean XML 配置(2)- Bean作用域与生命周期回调方法配置 Bean XML 配置(3)- 依赖注入配置 Bean XML 配置(

配置Azrue与本地AD目录集成

本文介绍使用Dirsync工具将Azure与本地活动目录进行集成,Dirsync是比较早的一个目录同步工具,现在用基本被Azure AD Connect取代. 登录到Azure管理Portal,在active Directory中,中到"域",然后点击添加 输入域名,点击添加,下一步 下一步 勾选立即转到"目录"集成"页,点击确定 激活目录同步. 以上是在Azure 的Portal中进行配置,接下来要在本地的环境中,找一台额外域控制器(最好是位于DMZ)区

Prism 学习:从本地目录加载 Module

在 Prism 中,将外部模块加载到主程序有以下几种方式:Code.XAML.配置文件.指定模块目录:其中,如果要使用 Code 方式来加载 Module,则需要将该 Module 引用到当前项目中:而后面两种通过 XAML与配置文件,在原理上大体一致:本文主要讨论第四种方法,即通过指定 Module 所在的目录来加载 Module. 首先,我们需要在 Bootstrapper 类中重载 CreateModuleCatelog 方法,在该方法中定义一个 DirectoryModuleCatalo

【.NET】VS 本地调试 无法加载Json文件

1.如果要是发布到iis,还加载不出来,那就要配置一下MIME类型: 2.本地调试时,无法加载json文件: 解决方案: 在web.config中添加如下配置:mimeMap <system.webServer> <defaultDocument> <files> <clear /> <add value="default.aspx" /> </files> </defaultDocument> <

创建 cachingConfiguration 的配置节处理程序时出错: 未能加载文件或

C:\Users\xxx\Documents\IISExpress\config\applicationhost.config 将这里面带的项目路径替换成你当前路径 {"创建 cachingConfiguration 的配置节处理程序时出错: 未能加载文件或程序集"Microsoft.Practices.EnterpriseLibrary.Caching, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e

android项目 之 来电管家(7) ----- 加载用户设置并启监听用服务

因为我们用的是SharedPreferences来存储用户设置信息,那么在初次进入来电管家时,会有一些默认的设置,后续根据用户的设置,更新设置信息文件的内容. 打开应用程序,首先启动的是ActivityGroupDemo,并默认显示黑名单界面,这时,需要在ActivityGroupDemo.java中添加代码,判断用户是否是第一次进入该应用,如果是第一次,则写入默认的设置信息. 这里判断用户是否为第一次进入该应用程序,采用的思路为: 1)因为SharedPreferences会在应用程序目录下的