Spring Boot(二):配置文件详解

配置文件详解

SpringBoot中,配置文件分为两种:

  1. application.properties
  2. application.yml
    本节主要围绕.properties来讲,yml的用法实际相似。

properties

这个文件就跟我们在spring项目中一样,value(值)对应的key(键)要全部写全。
就像下面描述的那样,定义了书名、作者、年龄。

project.book=程序员的自我修养
project.author=清风吹我心
project.age=25

那么如何在SpringBoot中获取配置文件中的值呢?
首先创建一个Controller

package com.qfcwx.springbootproperties.controller;

import com.qfcwx.springbootproperties.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @ClassName: PropertisController
 * @Author: 清风一阵吹我心
 * @Description: TODO
 * @Date: 2019/3/9 15:41
 * @Version 1.0
 **/
@RestController
public class PropertiesController {

    @Value("${project.book}")
    private String book;

    @Value("${project.author}")
    private String author;

    @Value("${project.age}")
    private int age;


    @GetMapping(value = "/book")
    public String bookInfo() {
        return "《"+book + "》这本书的作者是:" + author + "," + age + "岁啦!";
    }

}

@Value这个注解可以根据键读取到对应的值。启动项目,访问:http://localhost:8080/book

可以看到,成功的取到了值。
当然,这是取出默认的application.properties文件中的值。那么,想取别的配置文件中的值,该怎么做呢?
这里就将配置文件与实体类进行映射。新建一个配置文件。
customer.properties

user.author=张三
user.age=18
user.sex=男
user.career=学生

然后,新建一个bean对象
User

package com.qfcwx.springbootproperties.pojo;

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

/**
 * @ClassName: User
 * @Author: 清风一阵吹我心
 * @Description: TODO
 * @Date: 2019/3/9 15:53
 * @Version 1.0
 **/
@Component
@PropertySource(value = "classpath:customer.properties")
@ConfigurationProperties(prefix = "user")
public class User {

    private String author;

    private int age;

    private String sex;

    private String career;

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public int getAge() {
        return age;
    }

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

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getCareer() {
        return career;
    }

    public void setCareer(String career) {
        this.career = career;
    }

    @Override
    public String toString() {
        return "User{" +
                "author='" + author + '\'' +
                ", age=" + age +
                ", sex='" + sex + '\'' +
                ", career='" + career + '\'' +
                '}';
    }
}

@Component:把普通pojo实例化到spring容器中。
@PropertySource:指定配置文件位置。
@ConfigurationProperties:设置相关属性。

可以看到配置文件中的大部分键,都以user开头,所以,可以给实体类配置有一个前缀。如果属性名称和配置文件里面的key一一对应,就不用加@Value。如果不一样,就要加@value("${XXX}")

基本上配置就完成了,然后修改controller类。

package com.qfcwx.springbootproperties.controller;

import com.qfcwx.springbootproperties.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @ClassName: PropertisController
 * @Author: 清风一阵吹我心
 * @Description: TODO
 * @Date: 2019/3/9 15:41
 * @Version 1.0
 **/
@RestController
public class PropertiesController {

    @Autowired
    private User user;

    @GetMapping(value = "/user")
    public User userInfo(){
        System.out.println(user);
        return user;
    }
}

因为把User对象加入到了Spring的IOC容器中,所以使用@Autowired进行注入即可。
启动项目,访问: http://localhost:8080/user

成功的显示了返回的结果。基本上properties的讲解就完了。

yml

YAML是“YAML不是一种标记语言”的外语缩写 ;但为了强调这种语言以数据做为中心,而不是以置标语言为重点,而用返璞词重新命名。它是一种直观的能够被电脑识别的数据序列化格式,是一个可读性高并且容易被人类阅读,容易和脚本语言交互,用来表达资料序列的编程语言。
它是类似于标准通用标记语言的子集XML的数据描述语言,语法比XML简单很多。

适用场景:

  1. 脚本语言:由于实现简单,解析成本很低,YAML特别适合在脚本语言中使用。Ruby,Java,Perl,Python,PHP,OCaml,JavaScript,Go 除了Java 和 Go,其他都是脚本语言。
  2. 序列化:YAML比较适合做序列化。因为它是宿主语言数据类型直转的。
  3. 配置文件:YAML做配置文件也不错。写YAML要比写XML快得多,并且比ini文档功能更强。

优点:

  1. 方便使用。
  2. 层级显示,减少配置文件的字数。
  3. 分类头使得yml文件更易读。

下面附上一张yml格式的配置文件,至于值得读取,和properties一样,就不讲解了。

愿你学会在孤独中,与自己交流,听自己说话,从而学会深刻。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值