前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >SpringBoot使用spring.config.import多种方式导入配置文件

SpringBoot使用spring.config.import多种方式导入配置文件

作者头像
恒宇少年
发布于 2022-04-24 12:19:33
发布于 2022-04-24 12:19:33
14.7K00
代码可运行
举报
运行总次数:0
代码可运行

简介

SpringBoot从2.4.x版本开始支持了导入文件的方式来加载配置参数,与spring.config.additional-location不同的是不用提前设置而且支持导入的文件类型相对来说要丰富很多。

我们只需要在application.properties/application.yml配置文件中通过spring.config.import属性配置需要导入的文件列表即可。

通过spring.config.import属性支持导入多种途径的配置文件,下面简单介绍几种。

导入classpath下的配置文件

可以导入classpath下任意目录的文件,使用方式如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
spring:
  config:
    import:
    # 导入classpath下default目录下的default.properties配置文件
    - classpath:/default/default.properties
    # 导入classpath下service目录下的service.yml配置文件
    - classpath:/service/service.yml

src/main/resource下分别创建defaultservice目录,在default目录下创建default.properties、在service目录下创建sevice.yml

通过上面配置的属性导入后我们直接就可以在项目中通过@ConfigurationProperties@Value来注入使用。

src/main/resourcesrc/main/java目录编译后都会到classpath根目录下。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// default.properties
default.password=111111
// service.yml
service:
  id: example
  port: 9999
  index-path: /index
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// default.properties
@Value("${default.password}")
private String defaultPassword;
---
// service.yml
@Configuration
@ConfigurationProperties(prefix = "service")
@Data
public class ServiceProperties {
    private String id;
    private int port;
    private String indexPath;
}

导入系统目录下的配置文件

可以导入操作系统目录下的配置文件,我在/Users/yuqiyu/Downloads目录下创建了名为system.properties的文件,导入方式如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
spring:
  config:
    import:
    # 导入系统目录/Users/yuqiyu/Downloads下的system.properties配置文件
    - optional:/Users/yuqiyu/Downloads/system.properties

使用@ConfigurationProperties方式注入映射如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// system.properties
system.os=osx
system.jdk-version=11

// SystemProperties.java
@Data
@Configuration
@ConfigurationProperties(prefix = "system")
public class SystemProperties {
    private String os;
    private String jdkVersion;
}

导入Nacos配置中心的配置文件

NacosSpringCloud Alibaba发布了2021.0.1.0版本后对spring.config.import做了支持,可以直接通过加载Nacos Server内指定的配置文件。

首先我们使用Docker来创建一个Nacos Server容器,步骤如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 拉取nacos-server镜像
docker pull nacos/nacos-server
# 创建并启动nacos-server容器
docker run --name nacos-quick -e MODE=standalone -p 8848:8848 -p 9848:9848 -d nacos/nacos-server:latest

访问http://localhost:8848/nacos,使用默认账号nacos登录后在public命名空间下创建一个名为spring-config-import-example.yamlYAML格式的配置文件,内容如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
config:
    source: nacos

SpringBoot项目中如果需要集成nacos,可以直接添加spring-cloud-starter-alibaba-nacos-config依赖,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<dependency>
  <groupId>com.alibaba.cloud</groupId>
  <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
  <version>2021.0.1.0</version>
</dependency>

导入方式如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
spring:
  cloud:
    nacos:
      server-addr: localhost:8848
  config:
    import:
    # 导入nacos配置中心的配置文件
    - optional:nacos:spring-config-import-example.yaml

在项目中同样可以使用@ConfigurationProperties@Value来注入配置参数,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Value("${config.source}")
private String configSource;

总结

spring.config.import使用方式是多样化的,如果你需要自定义导入的方式,可以借鉴nacos对其实现的部分代码。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022.04.10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Nacos Config--服务配置
使用nacos作为配置中心,其实就是将nacos当做一个服务端,将各个微服务看成是客户端,我们 将各个微服务的配置文件统一存放在nacos上,然后各个微服务从nacos上拉取配置即可。 接下来我们以商品微服务为例,学习nacos config的使用。
用户10196776
2022/11/28
5550
Nacos Config--服务配置
spring-gateway 基于 nacos 配置文件的动态路由
InFileRouteDefinitionRepository 类主要是简单 nacos 中的配置文件routes.json 的变化;只要监听到 routes.json 就进行路由更新。
BUG弄潮儿
2022/12/05
9460
SpringCloud+Nacos实现服务配置中心(Hoxton版本)
关于 Nacos Spring Cloud 的详细文档请参看:Nacos Config和Nacos Discovery。
程序员的时光001
2021/04/23
1.3K0
SpringCloud+Nacos实现服务配置中心(Hoxton版本)
【微服务】配置Nacos管理SpringBoot配置文件(附解压包)
Nacos可以帮助我们配置和管理微服务,是阿里的一个开源产品,是针对微服务架构中的服务发现、配置管理、服务治理的综合型解决方案。Nacos可以用来实现配置中心和服务注册中心。
哈__
2024/04/08
5310
【微服务】配置Nacos管理SpringBoot配置文件(附解压包)
SpringBoot使用Nacos进行服务注册发现与配置管理
最近由于业务发展,需要调研一套完善和主流的基础架构,进行中台化(微服务)的实施,考虑到技术栈切换到SOFAStack。既然整个体系都切换到蚂蚁金服的技术栈,那么自然考虑一些基础组件如服务注册发现、配置管理等都切换为阿里的技术栈。考虑到目前比较热的服务发现组件是Nacos,需要调研SpringBoot服务接入Nacos的可行性,为以后强制要求新服务使用SOFAStack + Nacos的技术栈进行服务开发打下基础。
Throwable
2020/06/23
4.3K0
SpringBoot使用Nacos进行服务注册发现与配置管理
微服务灵魂摆渡者Nacos
Nacos是阿里巴巴开源的服务注册中心以及配置中心,致力于给开发者提供一款便捷、简单上手的开源框架。
爱撒谎的男孩
2022/12/30
4280
万字长文 | Spring Cloud Alibaba组件之Nacos实战及其客户端服务注册源码解析
假设有这样一个场景,我们乘坐公车需要确定自己的座位在哪里,才能入座,否则有可能那是别人的座位,等别人来做的时候把我撵起来那就尴尬了。正常的情况应该是有个售票员给我发个带有座位编号的票,然后我去对号入座,这样就可以快速找到自己的座位且没有被撵走的风险。
行百里er
2022/11/22
1.2K0
万字长文 | Spring Cloud Alibaba组件之Nacos实战及其客户端服务注册源码解析
面试题57:如何基于Spring Cloud Alibaba Nacos进行单个DataID的配置读取?
因为nacos的配置要优先加载,所以放到bootstrap.yml中,而不是application.yml中
爪哇缪斯
2023/05/10
3830
面试题57:如何基于Spring Cloud Alibaba Nacos进行单个DataID的配置读取?
springboot配置文件中的基础配置
SpringBoot配置文件默认为application.和application-default.,如果通过spring.config.name属性指定了自定义配置文件名则加载读取指定的配置文件;扩展名有四个:.properties、.xml、.yml、.yaml;
在水一方
2022/06/14
6900
springboot配置文件中的基础配置
Spring Cloud Alibaba - 17 Nacos Config 配置中心 应用篇
https://nacos.io/zh-cn/docs/concepts.html
小小工匠
2022/02/05
7830
Spring Cloud Alibaba - 17 Nacos Config 配置中心 应用篇
一、SpringCloudAlibaba环境搭建
访问地址:https://github.com/alibaba/nacos 本人下载的时候最新的release版本是1.4.1版本
云叶知秋
2021/03/08
2K0
一、SpringCloudAlibaba环境搭建
SpringCloud之Nacos配置管理【统一配置管理,配置热更新,配置共享】
上一篇博客地址:(2条消息) 微服务框架之Spring Cloud 学习_一切总会归于平淡的博客-CSDN博客
叫我阿杰好了
2022/11/07
2.9K0
SpringCloud之Nacos配置管理【统一配置管理,配置热更新,配置共享】
SpringBoot配置文件高级用法实战
Spring Boot配置文件的优先级是一个重要的概念,它决定了当存在多个配置文件时,哪个配置文件中的配置将被优先采用。
公众号:码到三十五
2024/08/06
2260
SpringBoot配置文件高级用法实战
SpringCloud Alibaba Nacos 服务注册和配置中心
前四个字母分别为 Naming 和 Configuration 的前两个字母,最后的 s 为 Service。
OY
2022/03/17
8050
SpringCloud Alibaba Nacos 服务注册和配置中心
SpringBoot中的配置文件详解(yml、properties全局配置和自定义配置、@ConfigurationProperties与@Vuale使用、有趣的banner图配置)
全局配置文件能够对一些默认配置值进行修改。Spring Boot使用一个application.properties或者application.yaml的文件作为全局配置文件,该文件存放在src/main/resource目录或者类路径的/config,一般会选择resource目录。接下来,将针对这两种全局配置文件进行讲解∶
共饮一杯无
2022/11/28
13.1K0
SpringBoot中的配置文件详解(yml、properties全局配置和自定义配置、@ConfigurationProperties与@Vuale使用、有趣的banner图配置)
Spring Cloud Gateway实战之三:动态路由
本篇概览 本文是《Spring Cloud Gateway实战》系列的第三篇,前文介绍了多种路由配置方式,它们存在一个共同问题:路由配置变更后必须重启Gateway应用才能生效,聪明的您一下就看出了问题关键:这样不适合生产环境! 如何让变动后的路由立即生效,而无需重启应用呢?这就是今天的主题:动态路由 设计思路 这里提前将设计思路捋清楚,总的来说就是将配置放在nacos上,写个监听器监听nacos上配置的变化,将变化后的配置更新到Gateway应用的进程内: 上述思路体现在代码中就是下面三个类: 将操作路由
程序员欣宸
2021/12/07
9050
Spring Cloud Gateway实战之三:动态路由
SpringBoot教程(四) | SpringBoot中的配置文件
上文我中我们提到,spring中常用的配置文件有yml 和 properties 两种,都是以application来命名的,通常放到resources文件夹下。yml是使用缩进来体现层级管理的, 而properties 中是以. 的形式体现。二者没啥区别,根据个人的使用习惯来进行选择即可。目前来说用的比较多的还是yml 形式的。为什么呢,因为properties 可能会有很多冗余的书写,相对于yml来说,不够简洁。我们具体体会一下。
一缕82年的清风
2022/04/08
6760
SpringBoot教程(四) | SpringBoot中的配置文件
Springboot 系列(二)Spring Boot 配置文件
不管是通过官方提供的方式获取 Spring Boot 项目,还是通过 IDEA 快速的创建 Spring Boot 项目,我们都会发现在 resource 有一个配置文件 application.properties,也有可能是application.yml.这个文件也就是 Spring Boot 的配置文件。
未读代码
2019/11/04
1.6K0
SpringBoot配置文件的12个实用技巧
配置文件是SpringBoot应用的核心组成部分,它决定了应用的行为、连接参数以及功能特性。
每周聚焦
2025/05/19
1180
SpringBoot配置文件的12个实用技巧
55 张图吃透 Nacos,微服务的灵魂摆渡者强大在哪
Nacos是阿里巴巴开源的服务注册中心以及配置中心,致力于给开发者提供一款便捷、简单上手的开源框架。
程序员小富
2021/09/24
2.8K3
55 张图吃透 Nacos,微服务的灵魂摆渡者强大在哪
推荐阅读
相关推荐
Nacos Config--服务配置
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验