Java 笔记 之 SpringBoot(配置文件)

SpringBoot默认配置好了许多配置,使开发变得不在那么繁琐;但是,默认的配置,肯定不能满足变化多端、环境各异的系统的需要,因此SpringBoot提供了两种配置方式:
properties和yml

1. properties文件

项目创建之后,SpringBoot会默认在src/main/resources下帮你创建一个application.properties文件
这里写图片描述
默认创建的application.properties文件里面没有内容,是一个空文件,不过springboot已经默认配置好了很多配置,如果要自定义,则可以在这个文件中进行配置。
SpringBoot有多到没法记的可配置项,所以说有开发工具的自动提示功能也是极好,自动提示的配置名和配置的内容(不过注意要使用Spring Properties Editor打开才会提示)。

自动提示设置:

  • 1.Help->Eclipse Marketplace
    这里写图片描述
  • 2.安装spring tools
    这里写图片描述
  • 3.右键点击application.properties文件,用spring properties editor编辑器打开
    这里写图片描述
  • 4.提示成功出现
    这里写图片描述

2.yml文件

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

个人觉得,yaml文件在SB配置文件中就是xml+json+Properties,它汲取了三者的最简单易用的地方结合到了一起,可读性比这3者更强,而且所需的字符更少。除了用作配置文件外,YAML也可以像XML和JSON用来序列化对象。

YAML在使用时,比properties多了一些格式上的要求,最基本的格式就是 key: value,注意,这个冒号和value之间要有一个空格!YAML也支持多层次的key,大致格式如下(如果是回车,冒号后面则不需要空格)

key: 

     key1: value1

     key2: value2

两种配置文件的作用是一样的,不过yml文件阅读更直观

配置文件详解

1、 自定义属性

当我们创建一个springboot项目的时候,系统默认会为我们在src/main/Java/resources目录下创建一个application.properties。个人习惯,我会将application.properties改为application.yml文件,两种文件格式都支持。

在application.yml自定义一组属性:

my:
  name: wude
  age: 18

如果你需要读取配置文件的值只需要加@Value(“${属性名}”):

@RestController
public class GetYmlValue{

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

    @RequestMapping("/getUserDefined")
    public String getUserDefined() {
        return name + " : " + age;
    }
}

2、将配置文件的属性赋给实体类

当我们有很多配置属性的时候,这时我们会把这些属性作为字段来创建一个javabean,并将属性值赋予给他们,比如:

my:
 name: forezp
 age: 12
 number:  ${random.int}
 uuid : ${random.uuid}
 max: ${random.int(10)}
 value: ${random.value}
 greeting: hi,i'm  ${my.name}

其中配置文件中用到了${random} ,它可以用来生成各种不同类型的随机值。
怎么将这些属性赋于给一个javabean 呢,首先创建一个javabean :

@ConfigurationProperties(prefix = "my")
@Component
public class ConfigBean {

    private String name;
    private int age;
    private int number;
    private String uuid;
    private int max;
    private String value;
    private String greeting;

    //省略了getter setter....

需要加个注解@ConfigurationProperties,并加上它的prrfix。@Component可加可不加。会提示spring-boot-configuration-processor依赖

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
</dependency>

需要在应用类或者application类,加EnableConfigurationProperties注解。(我没有配置这个注解也拿到了)

@RestController
@EnableConfigurationProperties({ConfigBean.class})
public class GetYmlValue {

    @Autowired
    private ConfigBean configBean;

    @RequestMapping("/getConfigBean")
    public ConfigBean getConfigBean() {
        return configBean;
    }
}

启动工程,访问localhost:8080/getConfigBean,我们会发现配置文件信息读到了。

3、自定义配置文件

上面介绍的是我们都把配置文件写到application.yml中。有时我们不愿意把配置都写到application配置文件中,这时需要我们自定义配置文件,比如test.properties:

com.forezp.name=forezp
com.forezp.age=12

怎么将这个配置文件信息赋予给一个javabean呢?

@Configuration
@PropertySource(value = "classpath:test.properties")
@ConfigurationProperties(prefix = "com.forezp")
public class User {
    private String name;
    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;
    }
}

在最新版本的springboot,需要加这三个注解。@Configuration
@PropertySource(value = “classpath:test.properties”)
@ConfigurationProperties(prefix = “com.forezp”);在1.4版本需要
PropertySource加上location。

@RestController
@EnableConfigurationProperties({ConfigBean.class,User.class})
public class LucyController {
    @Autowired
    ConfigBean configBean;

    @RequestMapping(value = "/lucy")
    public String miya(){
        return configBean.getGreeting()+" >>>>"+configBean.getName()+" >>>>"+ configBean.getUuid()+" >>>>"+configBean.getMax();
    }

    @Autowired
    User user;
    @RequestMapping(value = "/user")
    public String user(){
        return user.getName()+user.getAge();
    }

}

启动工程,打开localhost:8080/user;浏览器会显示:
forezp12

4、多个环境配置文件

在现实的开发环境中,我们需要不同的配置环境;格式为application-{profile}.properties,其中{profile}对应你的环境标识,比如:

  • application-test.properties:测试环境
  • application-dev.properties:开发环境
  • application-prod.properties:生产环境

怎么使用?只需要我们在application.yml中加:

spring:
  profiles:
    active: dev

其中application-dev.yml:

server:
  port: 8082

启动工程,发现程序的端口不再是8080,而是8082。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值