SpringBoot配置文件

—— 本文转自onestar:SpringBoot配置文件

一、SpringBoot配置文件类型

SpringBoot是基于约定的,所以很多配置都有默认值,但如果想使用自己的配置替换默认配置的话 ,就可以自己编写配置文件进行相应配置,起步依赖spring-boot-starter-parent 中,有配置文件的引入,如下:

<resource>
    <filtering>true</filtering>
    <directory>${basedir}/src/main/resources</directory>
    <includes>
        <include>**/application*.yml</include>
        <include>**/application*.yaml</include>
        <include>**/application*.properties</include>
    </includes>
</resource>

可以看到,${basedir}/src/main/resources 表示资源的加载文件,资源文件包括下面三种格式的,也就是说,咱们在配置SpringBoot资源文件的时候都是以 application*.yml、application*.yaml、application*.properties文件格式,.yml 和 .yaml 文件相同,而且在配置的时候一般都以 application 命名,所以SpringBoot配置文件可以归为以下两种:

application.properties
application.yml(application.yaml)

1. application.properties 配置文件
咱们可以创建 application.properties 配置文件去覆盖 SpringBoot 的默认配置,可以在resources 文件夹下创建 application.properties 文件,这里就以手动配置 Tomcat 端口去覆盖SpringBoot 默认配置为例,我们知道 Tomcat 默认打开端口是8080,咱们可以通过 application.properties 配置文件去修改这个默认配置:

server.port=8888
添加配置之后,运行项目

properties 文件是以键值对的形式编写,可以看到,通过修改application.properties 配置文件,已经将 Tomcat 端口改为 8888,覆盖了之前的配置,由于 properties 文件在以往用的也比较多,较为常见,这里就不做过多讲述,主要还是对 yml 配置文件进行学习。

2. application.yml(application.yaml) 配置文件

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

【1】yml配置文件语法

yml 的配置可以分为下面几种,我们先在 resources 文件夹下面创建 application.yml 配置文件

配置普通数据
配置对象数据
配置Map数据
配置数组数据
配置普通数据:

语法: key: value
eg:
name: onestar
注意:value前面有一个空格

配置对象数据:

语法1:
key:
    key1: value1
    key2: value2
语法2:
key: {key1: value1,key2: value2}
eg:
person:
    name: oneStar
    age: 18
    addr: yichun
	
#或者
person: {name: oneStar,age: 18,addr: yihcun}
注意:key1前面的空格个数不限定,在yml语法中,相同缩进代表同一个级别

配置Map数据:

配置Map数据和配置对象数据相同
eg:
map:
    key1: value1
    key2: value2
配置数组数据:

语法1
key:
    - value1
    - value2
语法2
key: [value1,value2]
eg:
city:
  - beijing
  - tianjin
  - shanghai
  - chongqing
  
#或者
city: [beijing,tianjin,shanghai,chongqing]
 
#集合中的元素是对象形式
student:
  - name: oneStar
    age: 18
    score: 100
  - name: twoStar
    age: 28
    score: 88
  - name: threeStar
    age: 38
    score: 90
注意:value1与之间的 - 之间存在一个空格

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

配置文件中的配置,不管是 properties 文件还是 yml 文件,有一些配置 SpringBoot 会自动去识别,比如 server.port=8888 配置,但有一些我们自定义的配置,SpringBoot 并不能自动识别,怎样才能让 SpringBoot 认识自己配置的信息呢,这里就有两种方法:

使用注解 @Value 映射
使用注解 @ConfigurationProperties 映射

1、使用注解 @Value 映射
我们可以通过@Value注解将配置文件中的值映射到一个Spring管理的Bean的字段上,这里以 yml 文件进行说明

application.yml 配置如下:
person:
  name: oneStar
  age: 18
实体Bean代码如下:
@Controller
public class QuickController {
    @Value("${person.name}")
    private String name;
    @Value("${person.age}")
    private int age;
 
    @RequestMapping("/quick")
    @ResponseBody
    public String quick(){
        return "name="+name+",age="+age;
    }
}

2、使用注解 @ConfigurationProperties 映射
使用 Value 映射能够精确的匹配到某一属性,但如果有很多属性,就带来了不便,因此,还可以使用 @ConfigurationProperties 映射,通过注解@ConfigurationProperties(prefix=“配置文件中的key的前缀”)可以将配置文件中的配置自动与实体进行映射

application.yml 配置如下:
person:
  name: oneStar
  age: 19
实体Bean代码如下:
@Controller
@ConfigurationProperties(prefix = "person")
public class QuickController {
    private String name;
    private int age;
 
    public void setName(String name) {
        this.name = name;
    }
 
    public void setAge(int age) {
        this.age = age;
    }
 
    @RequestMapping("/quick")
    @ResponseBody
    public String quick(){
        return "name="+name+",age="+age;
    }
}

注意:使用@ConfigurationProperties方式可以进行配置文件与实体字段的自动映射,但需要字段必须提供set方法才可以,而使用@Value注解修饰的字段不需要提供set方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值