SpringBoot配置文件properties和yml的实现

目录
  • 配置文件的作用
  • SprintBoot的配置文件(两种):
  • properties
  • yml
  • 读取配置文件的方法:
    • @Value注解读取单个配置项
    • @ConfigurationProperties读取实体类
  • properties VS yml 总结

配置文件的作用

通常情况下,一个项目中的一些重要信息都会放在配置文件中,比如:数据库的连接信息、项目的启动端口、一些第三方的秘钥、记录信息的普通日志和异常日志等。

SprintBoot的配置文件(两种):

Spring Boot的配置文件主要有两种格式:

.properties和.yml

这两种格式的配置文件可以共同存在于一个项目中,但一般情况下我们会统一格式,只使用其中的一种,来降低故障率。
.properties是最早期的SpringBoot配置文件的格式,也是现在默认的配置文件格式,出现的时间早于.yml。
当这两个配置文件中出现相同的配置时,会优先执行.properties中的配置,然后再执行.yml中的配置,即.properties的优先级大于.yml

properties

创建SpringBoot项目后会自动生成一个配置文件,在该文件中,信息以键值对的形式进行储存。

# 配置项目的信息
# key=value
 server.port=8080
 spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb?
 characterEncoding=utf8
 spring.datasource.username=root
 spring.datasource.password=root

如果我们想要在这个文件中配置一些信息,可以在遵循key-value格式下,可以定义任意名称的key

缺点:
对于同一个对象的多个属性进行设置时很麻烦,需要多次重复,存在冗余配置项。
如下,当我们想要设置同一个对象很多的信息时,需要多次重复这个信息:

而yml就很好的解决了这个问题。

yml

yml是YMAL的缩写,全称是 Yet Another Markup Language另一种标记语言
YMAL是一个可读性高、易于理解、用来表达数据序列化的格式。
YMAL的作用是可以做到跨语言使用,不仅Java中可以使用,Go和python中都可以使用。

1.语法格式:

key: value表示键值对关系,冒号后面必须加一个空格
大小写敏感
缩进时不允许使用tab键,只能用空格
左对齐的一列数据就表示同一级
松散表示,java使用驼峰命名,而用原名或者-代替都可以正确映射,比如java中的名称是lastName,yml中使用lastName或者last-name都可以映射到。

2.键值关系

#  通常写法:
 student:
      id: 1
      name: 张三
      age: 20

# 行内写法
 student: { id: 1,name: 张三, age: 20}

yml中,字符串默认不需要加上单引号或者双引号
使用双引号:不会转义字符串中的特殊字符,特殊字符会作为本身想要表达的意思:比如 name: “zhangsan \n 23”,会输出:zhangsan 换行 23
使用单引号:会转义特殊字符,特殊字符失去特殊作用变成普通字符。

在配置文件中,它是以键值对的形式储存信息的,如果是自己配置的信息,你可以在遵循key-value的格式下,定义任何名称的key.

使用YML连接数据库:

sping:
  datasource:
    url:jdbc: mysql://127.0.0.0:3306/dbname?characterEncoding=tuf8
    username: root
    password: root

表示常用的字面量:

# 普通字面量
name: zhangsan
age: 18

#布尔类型
flag: true

#日期
date: 2022/04/15

# 同一个对象的多个属性
people:
      name: lisi
      age: 20
# 数组
# 用 -表示数组中的一个元素
pets:
   - cat
   - dog
   - pig
# 行内写法
petss: [dog,cat,pig]

# list对象、set对象、数组对象
students:
      - name: zhangsan
        age: 22
      - name: lisi
        age: 20
      - {name: wangwu,age: 18}

读取配置文件的方法:

@Value注解读取单个配置项

如果我们想要主动的读取配置文件中的信息,可以使用注解@Value。

使用格式:

 @Value("${server.port}")
   private String port;

在属性前加上@Value注解,后面的括号写入要读取的配置中哪个key,比如读取下面的server.port,注意格式:双引号+${}

# 配置项目端口
 server.port=8080

在测试类中得到这个值并进行打印:

package com.example.demo;

import Controller.TestReadYml;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication implements InitializingBean {

    @Value("${server.port}")
    private String port;

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class,args);
    }

    @Override
    public void afterPropertiesSet() throws Exception {
        System.out.println("  ");
        System.out.println("读取到信息:"+port);
        System.out.println("  ");
    }
}

输入:

@ConfigurationProperties读取实体类

1.将配置文件中的一组对象映射到实体类上:

使用格式:

@Component //spring 启动时直接将配置文件映射到当前类属性上
@ConfigurationProperties("student") //student是在配置好的key

举例:
在yml配置文件中,我们创建一个student对象:

 student:
      id: 1
      name: 张三
      age: 20

将这个对象映射到Student类中,也就是从配置文件里读取到类中,

package model;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component //spring 启动时直接将配置文件映射到当前类属性上
@ConfigurationProperties("student")
public class Student {
    private int id;
    private String name;
    private int age;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    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;
    }
}

2.使用注入的方式将对象注入到一个类中

在启动类中注入Student类进行使用:

package com.example.demo;

import com.example.demo.model.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
@SpringBootApplication
@Component
public class DemoApplication {

    public static void main(String[] args) {

        SpringApplication.run(DemoApplication.class,args);
    }

    //属性注入
    @Autowired
    private Student student;
    @PostConstruct
    private void postConstruct(){
        System.out.println("Read Yml:"+student);
    }
}

输出:

Read Yml:Student{id=1, name='张三', age=20}

注意包路径配置的问题!!!
启动类和要注入的类包必须放在同级目录下,否则读取不到,会显示启动失败Application failed to start.

properties VS yml 总结

  • yml语法更简洁,可以解决数据冗余问题
  • yml跨语言的通用性更好,它不支持java语言还支持golang 和python
  • yml 支持更多的数据类型
  • yml格式的配置文件在写的时候更容易出错(冒号后面需要加一个空格),而properties虽然写法更复杂但是不容易出错。
  • yml虽然可以和properties共存,但一个项目中最好统一格式,只用其中的一个。

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

(0)

相关推荐

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

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

  • 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,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配置文件properties和yml中数组的写法

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

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

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

  • SpringBoot配置文件方式,在线yml文件转properties

    目录 一.SpringBoot可以识别4种配置文件 二.配置文件优先级 1.后缀优先级 2.目录顺序优先级(从上至下) 三.分享一下yml与properties配置转换 一.SpringBoot可以识别4种配置文件 1.application.yml 2.application.properties 3.bootstrap.yml 4.bootstrap.properties 注: 在微服务框架SpringCloud下,SpringBoot才会识别bootstrap配置文件,单纯SpringBo

  • spring-boot读取props和yml配置文件的方法

    最近微框架spring-boot很火,笔者也跟风学习了一下,废话不多说,现给出一个读取配置文件的例子. 首先,需要在pom文件中依赖以下jar包 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <d

  • 使用springboot配置文件yml中的map形式

    目录 springboot配置文件yml的map形式 1.yml中的格式 2.创建一个类 3.引用 4.打印 SpringBoot yaml文件map集合使用 yaml文件配置 配置文件对应的bean springboot配置文件yml的map形式 1.yml中的格式 tes: maps: {key1: 12,key2: 34} 或者 tes: maps: key1: 15 key2: 2 2.创建一个类 然后创建对应类型的字段(注意下这个类的那两个注释了的注解) package com.etc

  • springboot如何引入外部yml配置文件

    目录 springboot引入外部yml配置文件 springboot引入多个yml 1. 项目内部配置文件 2. 外部配置加载顺序 springboot引入外部yml配置文件 当需要在springboot中引用其他的yml文件时,需要在application.yml里配置 spring: profiles: include: email,xmyb 值得注意的是:application-email.yml的前缀一定要和主在配置文件application.yml的名字一致 springboot引入

  • Eclipse中Properties和yml配置文件注释乱码的解决

    目录 Eclipse中Properties和yml配置文件注释乱码 解决方案 eclipse中打开.yml文件老是报错的问题 在eclipse中打开.yml文件老是报错 我是这样子解决的 Eclipse中Properties和yml配置文件注释乱码 Properties默认的编码格式是ISO-8859-1,所以无论是粘贴有中文到Propertiest中还是手打中文注释,都会显示如下编码格式: 解决方案 步骤: Window—>Preferences—>General—>Content T

  • SPRINGBOOT读取PROPERTIES配置文件数据过程详解

    这篇文章主要介绍了SPRINGBOOT读取PROPERTIES配置文件数据过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.使用@ConfigurationProperties来读取 1.Coffer entity @Configuration @ConfigurationProperties(prefix = "coffer") @PropertySource("classpath:config/coffer.p

  • springboot如何读取配置文件(application.yml)中的属性值

    在spring boot中,简单几步,读取配置文件(application.yml)中各种不同类型的属性值: 1.引入依赖: <!-- 支持 @ConfigurationProperties 注解 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId>

随机推荐