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

目录
  • 简介
  • 导入classpath下的配置文件
  • 导入系统目录下的配置文件
  • 导入Nacos配置中心的配置文件
  • 总结

简介

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

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

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

导入classpath下的配置文件

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

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根目录下。

// default.properties
default.password=111111
// service.yml
service:
  id: example
  port: 9999
  index-path: /index
// 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的文件,导入方式如下所示:

spring:
  config:
    import:
    # 导入系统目录/Users/yuqiyu/Downloads下的system.properties配置文件
    - optional:/Users/yuqiyu/Downloads/system.properties

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

// 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容器,步骤如下所示:

# 拉取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格式的配置文件,内容如下所示:

config:
    source: nacos

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

<dependency>
  <groupId>com.alibaba.cloud</groupId>
  <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
  <version>2021.0.1.0</version>
</dependency>

导入方式如下所示:

spring:
  cloud:
    nacos:
      server-addr: localhost:8848
  config:
    import:
    # 导入nacos配置中心的配置文件
    - optional:nacos:spring-config-import-example.yaml

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

@Value("${config.source}")
private String configSource;

总结

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

到此这篇关于SpringBoot使用spring.config.import多种方式导入配置文件的文章就介绍到这了,更多相关spring.config.import 导入配置文件内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • SpringBoot详细讲解多个配置文件的配置流程

    目录 配置文件加载顺序 验证 前期准备 验证配置文件加载顺序 验证属性互补 总结 一般情况下,springboot默认会在resource目录下生成一个配置文件(application.properties或application.yaml),但其实springboot允许配置多个配置文件(application.properties或application.yaml),但是这并不意味着这些配置文件一定会替换默认生成的配置文件,它们是互补的存在.如果在某些场景下需要把配置文件单独拿出来并且启动的

  • SpringBoot加载配置文件的实现方式总结

    目录 一.简介 二.代码实践 2.1.通过@value注解实现参数加载 2.2.通过@ConfigurationProperties注解实现参数加载 2.3.通过@PropertySource注解实现配置文件加载 2.4.通过自定义环境处理类,实现配置文件的加载 2.5.最后,我们来介绍一下yml文件读取 三.小结 一.简介 在实际的项目开发过程中,我们经常需要将某些变量从代码里面抽离出来,放在配置文件里面,以便更加统一.灵活的管理服务配置信息.比如,数据库.eureka.zookeeper.r

  • SpringBoot如何通过配置文件(yml,properties)限制文件上传大小

    目录 通过配置文件(yml,properties)限制文件上传大小 properties类型配置文件设置 yml类型配置文件设置 设置文件上传大小限制--默认为1M 解决方法 通过配置文件(yml,properties)限制文件上传大小 properties类型配置文件设置 # springboot 1.X spring.http.multipart.max-file-size=50Mb   spring.http.multipart.max-request-size=50Mb   # spri

  • springboot读取nacos配置文件的实现

    目录 首先,Nacos 的配置文件如下 第一种方式来解析 第二种方式来解析 SpringBoot 注册服务到 Nacos 上,由 Nacos 来做服务的管理.在 Nacos的配置列表中,管理着服务的配置文件.SpringBoot 有两种方式来读取配置文件的内容,一种是写配置文件类 @ConfigurationProperties ,一种是使用 @Value 注解. 首先,Nacos 的配置文件如下 ### 配置文件使用 yml 格式, 也可以使用 properties 格式,最终 yml 格式会

  • SpringBoot实现多环境配置文件切换教程详解

    目录 背景 解决方案 一.新建配置文件 二. 服务调用测试 2.1 新建调用类 2.2 使用样例项目 三.扩展练习 3.1 使用注解标记配置,首先定义一个接口 3.2 分别定义俩个实现类来实现它 3.3 修改application.yml文件激活配置 3.4 新增查询方法 3.5 使用一个或多个配置文件及激活标记文件 3.6 切换日志文件 背景 很多时候,我们项目在开发环境和生成环境的环境配置是不一样的,例如,数据库配置,在开发的时候,我们一般用测试数据库,而在生产环境的时候,我们是用正式的数据

  • springboot自定义yml配置文件及其外部部署过程

    目录 1.序 2.加载自定义yml文件 2.1.使用@PropertiesSource注解读取yml配置文件-简单版 2.2.使用@PropertiesSource注解读取yml配置文件-不简单版? 2.3.加前缀可行版 3.外部部署 3.1.spring boot核心配置文件外部加载 3.2.在@PropertySource中添加路径 3.3.通过YamlPropertiesFactoryBean添加路径 3.4.自定义yaml文件资源加载类 1.序 背景:有个小项目需要后台,俺顶着Java菜

  • SpringBoot动态修改yml配置文件的方法详解

    目录 前言 具体实现 实现代码 测试 源码 总结 前言 记录下SpringBoot修改yml配置文件后无需重启服务的方式(打包后生效),效果如下: 具体实现 实现代码 pom.xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </d

  • springboot配置文件中使用${}注入值的两种方式小结

    目录 配置文件中使用${}注入值方式 在springboot中使用System.setProperty设置参数 配置文件自扫描 spring配置文件${}的用法 话不多说直接看就完事了 配置文件中使用${}注入值方式 在springboot中使用System.setProperty设置参数 user:   user-name: ${username}   age: ${age} 配置文件是这种写法,我们可以用System.setProperty来设置参数,System.setProperty相当

  • SpringBoot配置文件properties和yml的实现

    目录 配置文件的作用 SprintBoot的配置文件(两种): properties yml 读取配置文件的方法: @Value注解读取单个配置项 @ConfigurationProperties读取实体类 properties VS yml 总结 配置文件的作用 通常情况下,一个项目中的一些重要信息都会放在配置文件中,比如:数据库的连接信息.项目的启动端口.一些第三方的秘钥.记录信息的普通日志和异常日志等. SprintBoot的配置文件(两种): Spring Boot的配置文件主要有两种格

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

    目录 简介 导入classpath下的配置文件 导入系统目录下的配置文件 导入Nacos配置中心的配置文件 总结 简介 SpringBoot从2.4.x版本开始支持了导入文件的方式来加载配置参数,与spring.config.additional-location不同的是不用提前设置而且支持导入的文件类型相对来说要丰富很多. 我们只需要在application.properties/application.yml配置文件中通过spring.config.import属性配置需要导入的文件列表即可

  • SpringBoot启动指定profile的多种方式

    配置文件中设置 通常在公司级别的项目中,我们可能会写多个application- dev/prod.yml ,然后我们通常会在application.yml配置文件中写入 spring: profiles: active: dev 这里会指定激活的profile是application- dev.yml 注意:application.yml中类似Java中的父类,其他application- dev/prod.yml会继承这个文件,可以进行重写,没有进行重写的属性我们也是能直接读取的,比如app

  • Vue export import 导入导出的多种方式与区别介绍

    在使用vue导出时会有一个default关键字,下面举例说明下在导出时使用export和export default的对应的imort写法的区别 一.部分导出和部分导入 部分导出和部分导入的优势,当资源比较大时建使用部分导出,这样一来使用者可以使用部分导入来减少资源体积,比如element-ui官方的就推荐使用部分导入来减少项目体积,因为element-ui是一个十分庞大的框架,如果我们只用到其中的一部分组件, 那么只将用到的组件导入就可以了. 1.1部分导出的写法 export functio

  • SpringBoot属性注入的多种方式实例

    目录 一.@Value注解注入属性 二.@ConfigurationProperties注解批量注入属性 三.注入实体对象 四.自定义文件注入 总结 一.@Value注解注入属性 SpringBoot默认可以将application.properties文件或application.yml文件中定义的属性值注入到java类中,这种注入实际上是通过java类属性的setter方法进行的. 例:将application.yml中的以下属性注入到类中: ## 自定义属性 petshop:   name

  • 详解Spring学习总结——Spring实现AOP的多种方式

    目录 一.基于XML配置的Spring AOP 二.使用注解配置AOP 三.AspectJ切点函数 四.AspectJ通知注解 五.零配置实现Spring IoC与AOP AOP(Aspect Oriented Programming)面向切面编程,通过预编译方式和运行期动态代理实现程序功能的横向多模块统一控制的一种技术.AOP是OOP的补充,是spring框架中的一个重要内容.利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发

  • Spring实现IoC的多种方式小结

    控制反转IoC(Inversion of Control),是一种设计思想,DI(依赖注入)是实现IoC的一种方法,也有人认为DI只是IoC的另一种说法.没有IoC的程序中我们使用面向对象编程对象的创建与对象间的依赖关系完全硬编码在程序中,对象的创建由程序自己控制,控制反转后将对象的创建转移给第三方,个人认为所谓控制反转就是:获得依赖对象的方式反转了. IoC是Spring框架的核心内容,使用多种方式完美的实现了IoC,可以使用XML配置,也可以使用注解,新版本的Spring也可以零配置实现Io

  • springboot获取URL请求参数的多种方式

    1.直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于post方式提交. /** * 1.直接把表单的参数写在Controller相应的方法的形参中 * @param username * @param password * @return */ @RequestMapping("/addUser1") public String addUser1(String username,String password) { System.out.pri

  • Spring cloud 限流的多种方式

    在频繁的网络请求时,服务有时候也会受到很大的压力,尤其是那种网络攻击,非法的.这样的情形有时候需要作一些限制.例如:限制对方的请求,这种限制可以有几个依据:请求IP.用户唯一标识.请求的接口地址等等. 当前限流的方式也很多:Spring cloud 中在网关本身自带限流的一些功能,基于 redis 来做的.同时,阿里也开源了一款:限流神器 Sentinel.今天我们主要围绕这两块来实战微服务的限流机制. 首先讲 Spring cloud 原生的限流功能,因为限流可以是对每个服务进行限流,也可以对

  • Spring通过<import>标签导入外部配置文件

    示例 我们先来看下配置文件是怎么导入外部配置文件的?先定义一个spring-import配置文件如下: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xs

  • SpringBoot实现人脸识别等多种登录方式

    目录 1.前端界面实现 2.手机验证码登录 3.人脸识别登录(百度人脸识别) 1.前端界面实现 ①背景闪烁效果: <!-- 背景星星闪烁效果 --> <script> window.onload = function () { // 屏幕的尺寸 var screenW = document.documentElement.clientWidth; var screenH = document.documentElement.clientHeight; // 2. 动态创建多个星星

随机推荐