Spring Boot 配置文件类型properties 格式与yml 格式

目录
  • 一 配置文件类型
  • 二 配置文件
    • 2.1 核心配置文件
      • 2.1.1 bootstrap.yml(bootstrap.properties)
      • 2.1.2 application.yml(application.properties)
    • 2.2 自定义配置文件
  • 三 配置文件读取
    • 3.1 读取核心配置文件信息
      • 3.1.1 Environment方式
      • 3.1.2 @Value方式
      • 3.1.3 @ConfigurationProperties方式
    • 3.2 读取自定义配置文件信息
      • 3.2.1 @PropertySource + @Value
      • 3.2.2 @ConfigurationProperties + @PropertySource + @Value
  • 四 配置文件的加载顺序
    • 4.1 项目内部配置文件加载顺序
    • 4.2 项目外部配置文件加载顺序

一 配置文件类型

Spring Boot默认支持properties和yml两种格式的配置文件。yml格式是天然的树状接口,相对于properties,yml更加的一目了然。这也是我们推荐的配置文件格式。

properties 格式举例:

server.port=8090
server.session-timeout=30
server.tomcat.max-threads=0
server.tomcat.uri-encoding=UTF-8

spring.datasource.url=jdbc:mysql://localhost:3306/newbirds
spring.datasource.username=root
spring.datasource.password=mymysql
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.jpa.database=MYSQL
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.hibernate.naming-strategy=org.hibernate.cfg.ImprovedNamingStrategy
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect

yml 格式举例:

server:
  port: 8090
  session-timeout: 30
  tomcat.max-threads: 0
  tomcat.uri-encoding: UTF-8
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/newbirds
    username: root
    password: mymysql
    driverClassName: com.mysql.jdbc.Driver
  jpa:
    database: MYSQL
    show-sql: true
    hibernate:
      ddl-auto: update
      naming-strategy: org.hibernate.cfg.ImprovedNamingStrategy
    properties:
      hibernate:
      dialect : org.hibernate.dialect.MySQL5Dialect

二 配置文件

2.1 核心配置文件

Spring Boot默认支持两种核心配置文件:bootstrap.yml(bootstrap.properties)、application.yml(application.properties)。bootsrap先加载。

2.1.1 bootstrap.yml(bootstrap.properties)

bootstrap.yml用于应用程序上文的引导节点,由父Spring ApplicationContext加载。我们可以简单的把bootstrap里面的配置信息理解成系统级别的参数。这些参数轻易是不会改变的。

bootstrap配置文件有以下几个应用场景:

  • 使用Spring Cloud Config的时候,需要将spring.application.name和spring.cloud.config.server.git.uri写入bootstrap.yml。
  • 一些固定的不能被覆盖的属性。
  • 一些加密/解密的场景。会把encryption/decryption(加密/解密)存储在bootstrap.yml里面。

一旦bootStrap.yml 被加载,则内容不会被覆盖,即便后期加载的application.yml的内容标签与bootstrap的标签一致,application 也不会覆盖bootstrap。

2.1.2 application.yml(application.properties)

application.yml是我们用的最多的一个配置文件.一般配置应用级别的配置,比如数据库的连接配置,如果我们用到了redis可能会写一些redis相关的配置等等。

2.2 自定义配置文件

为了不破坏核心文件的原生态,但又需要有自定义的配置信息存在,一般情况下会选择自定义配置文件来放这些自定义信息,比如我们在resource目录下创建一个product.properties文件.

resources/product.properties文件内容如下:

ppid = 1000
mmid = 1
ccid = 10

三 配置文件读取

3.1 读取核心配置文件信息

读取核心配置文件信息值的是读取bootstrap.yml(bootstrap.properties)、application.yml(application.properties)文件里面的信息.

3.1.1 Environment方式

这种方式是依赖注入Evnironment来完成,在创建的成员变量private Environment env上加上@Autowired注解即可完成依赖注入,然后使用env.getProperty("键名")即可读取出对应的值。比如如下的代码.

application.yml文件里面添加我们自定义的属性:

# 自定义的一些属性
user:
  info:
    name: tuacy
    age: 27

Environment方式读取配置信息:

@RunWith(SpringRunner.class)
@SpringBootTest()
public class PropertiesTest {
    private Environment environment;
    @Autowired
    public void setEnvironment(Environment environment) {
        this.environment = environment;
    }
    @Test
    public void test() {
        String name = environment.getProperty("user.info.name");
        Integer age = environment.getProperty("user.info.age", Integer.class);
        System.out.println("name = " + name + "; age = " + age);

    }
}

3.1.2 @Value方式

在@Value的${}中包含的是核心配置文件中的键名就可以得到对应的值.

@RunWith(SpringRunner.class)
@SpringBootTest()
public class PropertiesTest {
    @Value("${user.info.name}")
    private String name;
    @Value("${user.info.age}")
    private int age;
    @Test
    public void test() {
        System.out.println("name = " + name + "; age = " + age);
    }
}

3.1.3 @ConfigurationProperties方式

@ConfigurationProperties使用的时候对应的属性类一定要记得加上@Configuration或者在任何一个配置类(推荐启动类上)通过@EnableConfigurationProperties注解指定自定义的属性类.推荐直接在属性类上添加@Configuration注解.

@Configuration
@ConfigurationProperties(prefix = "user.info")
public class UserInfo {
    private int age;
    private String name;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}

3.2 读取自定义配置文件信息

3.2.1 @PropertySource + @Value

@PropertySource + @Value使用于读取property根式配置文件的信息.@PropertySource指定配置文件路径和编码格式,@Value指定配置文件里面的key值.

自定义的配置文件 product.properties:

ppid = 1000
mmid = 1
ccid = 10

对应的读取方式:

@Configuration
@PropertySource(value = "classpath:product.properties", encoding = "utf-8")
public class ProductInfo {
    @Value("${ppid}")
    private int pid;
    @Value("${mmid}")
    private int mid;
    @Value("${ccid}")
    private int cid;
    public int getPid() {
        return pid;
    }
    public void setPid(int pid) {
        this.pid = pid;
    }

    public int getMid() {
        return mid;
    }

    public void setMid(int mid) {
        this.mid = mid;
    }

    public int getCid() {
        return cid;
    }

    public void setCid(int cid) {
        this.cid = cid;
    }
}

3.2.2 @ConfigurationProperties + @PropertySource + @Value

@ConfigurationProperties + @PropertySource + @Value适用于读取yml格式配置文件信息.@PropertySource指定配置文件路径和编码格式,@ConfigurationProperties和@Value指定配置文件里面的key值.

配置文件:

admin:
  user:
    name: tuacy
    age: 25

对应配置文件的读取方式:

@Configuration
@PropertySource(value = "classpath:role.yml")
@ConfigurationProperties(prefix = "admin.user")
public class RoleUserInfo {

    @Value("${name}")
    private String name;
    @Value("${age}")
    private int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

四 配置文件的加载顺序

优先级由高到底,高优先级的配置会覆盖低优先级的配置,
全部加载配置文件并互补配置.

4.1 项目内部配置文件加载顺序

SpringBoot配置文件可以放置在多种路径下,不同路径下的配置优先级有所不同。可放置目录(优先级从高到低)

  • 当前项目根目录下的config目录下。
  • 当前项目根目录下。
  • resources目录下的config目录下。
  • resource目录下。

4.2 项目外部配置文件加载顺序

优先级由高到低:

  • 命令行参数
  • 来自java:comp/env的JNDI属性
  • Java系统属性(System.getProperties())
  • 操作系统环境变量
  • RandomValuePropertySource配置的random.*属性值
  • jar包外部的application-{profile}.properties或application.yml(带spring.profile)配置文件
  • jar包内部的application-{profile}.properties或application.yml(带spring.profile)配置文件
  • jar包外部的application.properties或application.yml(不带spring.profile)配置文件
  • jar包内部的application.properties或application.yml(不带spring.profile)配置文件
  • @Configuration注解类上的@PropertySource
  • 通过SpringApplication.setDefaultProperties指定的默认属性

到此这篇关于Spring Boot 配置文件类型properties 格式与yml 格式的文章就介绍到这了,更多相关Spring Boot 配置文件内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 基于springBoot配置文件properties和yml中数组的写法

    目录 springBoot配置文件properties和yml数组写法 这两种方法你选择哪种都可以 .properties和.yml的写法区别 springBoot配置文件properties和yml数组写法 这里介绍一下springBoot中的两种文件配置方式中数组的使用,也就是集合. 以下是我springBoot中使用的 application.properties 文件 其实很好理解,我的configs是一个集合,configs[0].appid代表我配置的第一个对象中的appid的值 m

  • SpringBoot读取properties或者application.yml配置文件中的数据

    读取application文件 在application.yml或者properties文件中添加: user.address=china user.company=demo user.name=让我康康 1.使用@Value注解读取 直接 代码如下: package im.homeapi.controller; import org.springframework.beans.factory.annotation.Value; import org.omg.CORBA.PUBLIC_MEMBE

  • SpringBoot获取yml和properties配置文件的内容

    (一)yml配置文件: pom.xml加入依赖: <!-- 支持 @ConfigurationProperties 注解 --> <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-configuration-processor --> <dependency> <groupId>org.springframework.boot</groupId>

  • 详解Spring Boot加载properties和yml配置文件

    一.系统启动后注入配置 package com.example.config; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import org.springframewo

  • springboot代码,注解配置获取yml,properties文件的map即键值对

    目录 注解配置获取yml,properties文件map即键值对 yml获取自定义键值对 properties 获取自定义键值对 properties配置应用,为什么需要使用properties文件 注解配置获取yml,properties文件map即键值对 yml获取自定义键值对 yml中的键值对 test:   map:     key1: value1     key2: value2     key3: value3 pom中的依赖配置 <dependency>     <gro

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

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

  • Spring Boot 配置文件类型properties 格式与yml 格式

    目录 一 配置文件类型 二 配置文件 2.1 核心配置文件 2.1.1 bootstrap.yml(bootstrap.properties) 2.1.2 application.yml(application.properties) 2.2 自定义配置文件 三 配置文件读取 3.1 读取核心配置文件信息 3.1.1 Environment方式 3.1.2 @Value方式 3.1.3 @ConfigurationProperties方式 3.2 读取自定义配置文件信息 3.2.1 @Prope

  • 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

  • 详解Spring Boot配置文件application.properties

    在 Spring Boot 中,配置文件有两种不同的格式,一个是 properties ,另一个是 yaml . 虽然 properties 文件比较常见,但是相对于 properties 而言,yaml 更加简洁明了,而且使用的场景也更多,很多开源项目都是使用 yaml 进行配置(例如 Hexo).除了简洁,yaml 还有另外一个特点,就是 yaml 中的数据是有序的,properties 中的数据是无序的,在一些需要路径匹配的配置中,顺序就显得尤为重要(例如我们在 Spring Cloud

  • 解决spring boot 配置文件后缀的一个坑

    目录 spring boot 配置文件后缀的一个坑 spring boot配置文件支持 properties和yml 从新创建一个demo试试 spring boot 配置文件后缀导致启动失败 错误 错误原因 解决方案 spring boot 配置文件后缀的一个坑 Caused by: org.springframework.boot.autoconfigure.jdbc.DataSourceProperties$DataSourceBeanCreationException: Cannot d

  • 史上最全面的Spring Boot配置文件深入讲解

    前言 Spring Boot在工作中是用到的越来越广泛了,简单方便,有了它,效率提高不知道多少倍.Spring Boot配置文件对Spring Boot来说就是入门和基础,经常会用到,所以写下做个总结以便日后查看. 下面话不多说了,来一起看看详细的介绍吧 1.配置文件 当我们构建完Spring Boot项目后,会在resources目录下给我们一个默认的全局配置文件 application.properties,这是一个空文件,因为Spring Boot在底层已经把配置都给我们自动配置好了,当在

  • spring boot项目application.properties文件存放及使用介绍

    一.方法一多环境配置文件 我们一般都会有多个应用环境,开发环境.测试环境.生产环境,各个环境的配置会略有不同,我可以根据这个创建多份配置文件,由主配置文件来控制读取那个子配置 创建spring boot项目后可以同时创建多个.properties文件,只要符合它要求的格式即可 格式:application-{profile}.properties:{profile}是变量用于自定义配置文件名称 分别创建三个应用环境的配置和一个主配置 1.application.properties 主配置(以下

  • spring boot中的properties参数配置详解

    application.properties application.properties是spring boot默认的配置文件,spring boot默认会在以下两个路径搜索并加载这个文件 src\main\resources src\main\resources\config 配置系统参数 在application.properties中可配置一些系统参数,spring boot会自动加载这个参数到相应的功能,如下 #端口,默认为8080 server.port=80 #访问路径,默认为/

  • 利用Jasypt如何对Spring Boot配置文件加密

    前言 本文主要介绍了Jasypt对Spring Boot配置文件加密的相关方法,下面话不多说了,来一起看看详细的介绍吧 方法如下: 引入jasypt <dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>2.0.0</version> <

  • Spring Boot中的Properties的使用详解

    简介 本文我们将会讨怎么在Spring Boot中使用Properties.使用Properties有两种方式,一种是java代码的注解,一种是xml文件的配置.本文将会主要关注java代码的注解. 使用注解注册一个Properties文件 注册Properties文件我们可以使用@PropertySource 注解,该注解需要配合@Configuration 一起使用. @Configuration @PropertySource("classpath:foo.properties"

  • Spring Boot 配置文件详解(小结)

    Spring Boot提供了两种常用的配置文件,分别是properties文件和yml文件.他们的作用都是修改Spring Boot自动配置的默认值.相对于properties文件而言,yml文件更年轻,也有很多的坑.可谓成也萧何败萧何,yml通过空格来确定层级关系,是配置文件结构跟清晰,但也会因为微不足道的空格而破坏了层级关系.本章重点介绍yml的语法和从配置文件中取值.还在等什么,赶快来学习吧! 技术:yaml.properties语法,ConfigurationProperties和Val

  • 详解Spring Boot配置文件之多环境配置

    一. 多环境配置的好处: 1.不同环境配置可以配置不同的参数~ 2.便于部署,提高效率,减少出错~ 二. properties多环境配置 1. 配置激活选项 spring.profiles.active=dev 2.添加其他配置文件 application.properties: #激活哪一个环境的配置文件 spring.profiles.active=dev #公共配置 spring.jackson.date-format=yyyy-MM-dd HH:mm:ss: 运行的时候还可以制定激活的环

随机推荐