3.spring boot配置文件

spring boot(3):配置文件

一、springboot配置文件类型

1.springboot配置文件类型和作用

SpringBoot是基于约定的,所以很多配置都有默认值,但如果想使用自己的配置来替换默认配置,就可以使用application.properties或者application.yml(application.yaml)进行配置。

例如端口号,项目路径,数据源等。

SpringBoot默认会从Resources目录下加载application.properties或者application.yml(application.yaml)文件。其中properties文件是用键值对形式存储,大家应该都会用,下面说一下yml文件。

配置文件的优先级

properties>yaml>yml(因为最后加载的是properties文件,所以会覆盖掉之前的yml配置文件)

2.application.yml配置文件

springboot默认加载resources文件夹下面的application开头的yml或properties文件。

  1. yml文件简介

    yml文件是YAML(YAML Aint Markup Language)编写的文件格式,YAML是一种直观的能够被电脑识别的数据序列化格式,并且容易被人类阅读,容易和脚本语言交互的,其中被支持YAML库的不同的编程语言程序导入,比如C/C++,Ruby,Python.Perl,C#,PHP等。YML文件是以数据为核心,比传统的xml文件更加简洁。

    YML文件的扩展名可以是,yml和.yaml。

  2. yml配置文件的语法
    1. 配置普通数据
      • 语法:key: value

      • 示例代码

      • name: zhangsan
        
      • 注意:value之前有一个空格

    2. 配置对象数据
      • 语法:

      • key:

      • key1:value1

      • key2:value2

      • 或者:

      • key:{key1:value1,key2:value2}

      • 实例代码:

        person:
          name: zhangsan
          age: 23
          address: zhengzhou
          
        #或者
        person: {name: zhangsan,age: 23,address: zhengzhou}
        

        注意:key1前面的空格个数不限,在yml语法中,相同缩进代表同一个级别

    3. 配置map数据

      与上面的配置对象数据相同

    4. 配置数组(List、Set)数据
      • 语法:

      • key:

        • value1
      • -value2

      • 或者:

      • key:[value1,value2]

      • 实例代码:

        city: 
         - beijing
         - changsha
         - zhengzhou
         - shanghai
        #或者
        city: [beijing,changsha,zhengzhou,shanghai]
        #配置对象数组
        student:
         - name: tom
           age: 18
           address: beijing
         - name: rabbit
           age: 17
           address: zhenghzou
        #行内样式配置对象数组
        student: [{name: tom,age: 18,address: beijing},{name: rabbit,age: 17,address: zhengzhou}]
        

        注意:-后面要有空格

二、配置文件与配置类的属性映射

1.使用注解@Value映射

我们可以使用@Value注解将配置文件中的值映射到一个Spring管理的Bean的字段上

例如:

application.properties配置如下:

name=wangwu

student.name=zhaoliu
student.age=66
student.address=shijiazhuang

application.yml配置如下:

name: 张三
student: 
  name: 李四
  age: 24
  address: 郑州

测试类代码如下:

package com.test.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class Student {
	@Value("${name}")
	private String name;
	@Value("${student.address}")
	private String address;
	@ResponseBody
	@RequestMapping("/test")
	public String test() {
		return "name:"+name+",address:"+address;
	}
}

该种方式的优缺点:

优点:匹配字段更加精确。

缺点:如果字段过多需要每个属性都设置@Value注解

2.使用注解@ConfigurationProperties映射

通过注解@ConfigurationProperties(prefix=“配置文件种key的前缀”)可以将配置文件中的配置自动与实体进行映射

appication.properties配置如下:

name=wangwu

student.name=zhaoliu
student.age=66
student.address=shijiazhuang

application.yml配置如下:

name: 张三
student: 
  name: 李四
  age: 24
  address: 郑州

测试类代码如下

package com.test.controller;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@ConfigurationProperties("student")
public class Student1 {
	private String name;
	private String address;
	
	@ResponseBody
	@RequestMapping("/test1")
	public String test1() {
		return "name:"+name+",address:"+address;
	}

	public String getName() {
		return name;
	}

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

	public String getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}
}

这里我们会发现编译器会有警告,没有添加@ConfigurationProperties的执行器。(虽然没有配置也能成功),配置完成之后,在properties文件或者yml文件中会出现对应的提示。配置在pom.xml文件中

代码如下:

	<!-- @ConfigurationProperties执行器的配置 -->
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-configuration-processor</artifactId>
		<optional>true</optional>
	</dependency>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值