SpringBoot 实战 (五) | 配置文件详解

微信公众号:一个优秀的废人 若有问题或建议,请后台留言,我会尽力解决你的问题。前端

前言

如题,今天解析下 SpringBoot 的配置文件。mysql

自定义属性加载

首先构建 SpringBoot 项目,不会的看这篇旧文 使用 IDEA 构建 Spring Boot 工程git

首先在项目根目录 src >> resource >> application.properties 文件下加入如下自定义属性:github

# 防止读取乱码
spring.http.encoding.charset=UTF-8
# 项目启动端口
server.port=9999
# 自定义配置
com.nasus.author.name=一个优秀的废人
com.nasus.article.title=SpringBoot配置文件详解
复制代码

使用 @value 注解读取配置文件属性:web

package com.nasus.bean;

import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

/**
 * Project Name:springboot_properties_demo <br/>
 * Package Name:com.nasus.properties <br/>
 * Date:2019/1/28 20:59 <br/>
 * <b>Description:</b> TODO: 描述该类的做用 <br/>
 * @author <a href="turodog@foxmail.com">nasus</a><br/>
 */

@Data
@Component
public class PropertiesBean {

    @Value("${com.nasus.author.name}")
    private String name;

    @Value("${com.nasus.article.title}")
    private String title;

    @Value("${com.nasus.doing}")
    private String desc;

}
复制代码

以后新建 controller 测试自定义属性加载,代码以下:算法

package com.nasus.controller;

import com.nasus.bean.PropertiesBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/** * Project Name:springboot_properties_demo <br/> * Package Name:com.nasus.controller <br/> * Date:2019/1/28 21:41 <br/> * <b>Description:</b> TODO: 测试自定义属性加载<br/> * * @author <a href="turodog@foxmail.com">nasus</a><br/> */
@RestController
@RequestMapping("/test")
public class TestController {

    @Autowired
    private PropertiesBean propertiesBean;

    @GetMapping("/getInfo")
    public PropertiesBean getInfo(){
        return propertiesBean;
    }
}
复制代码

访问 http://localhost:8080/test/getInfo 查看加载结果:spring

测试结果

能够看到,加入 @value 注解以后,配置文件的属性都被读取出来了。之前,或许咱们还须要专门写一个读取配置文件的工具类才能把属性读取出来,如今有了 Spring ,咱们能够直接使用 @value 就能读取了,简直不能太方便。本例源码在这:github 地址sql

参数间的引用

配置文件代码以下:数据库

# 防止读取乱码
spring.http.encoding.charset=UTF-8
# 项目启动端口
server.port=9999
# 自定义配置
com.nasus.author.name=一个优秀的废人
com.nasus.article.title=SpringBoot配置文件详解

com.nasus.doing=${com.nasus.author.name}写文章《${com.nasus.article.title}》
复制代码

能够看到最后一个参数配置使用了前两个的参数配置,测试结果以下: 安全

测试结果

使用随机数

有时项目需求,可能咱们须要配置一些随机数,好比说为了安全而随机配置的服务器端口,以及登陆密钥。这时咱们就能够用 SpringBoot 的 random 属性来配置随机数,好比:

# 随机字符串
com.nasus.article.value=${random.value}
# 随机int
com.nasus.article.number=${random.int}
# 随机long
com.nasus.article.bignumber=${random.long}
# 10之内的随机数
com.nasus.article.test1=${random.int(10)}
# 10-20的随机数
com.nasus.article.test2=${random.int[10,20]}
复制代码

使用多配置文件

不少时候咱们开发项目都须要不少套环境,好比有测试环境,开发环境以及生产环境。不一样的环境就须要使用不一样的配置文件,为此咱们能够根据这 3 个环境分别新建 如下 3 个配置文件。

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

项目中默认的配置文件是 application.properties 。这时咱们能够根据本身的环境去使用相应的配置文件,好比说,项目各个环境的端口必须不同。那咱们能够这样配置: application-dev.properties:开发环境

server.port=6666
复制代码

application-test.properties:测试环境

server.port=7777
复制代码

application-prod.properties:生产环境

server.port=8888
复制代码

假如,如今我打包上线,那就必须用生产环境的配置文件了,这时咱们能够在 默认的配置文件 application.properties 中加入如下配置便可

spring.profiles.active=prod
复制代码

配置数据库

SpringBoot 的配置文件有两种格式,一种是 .properties 格式(以上栗子都是用的这种)还有一种用的是 .yaml 格式。如下是用 yaml 方式配置。这两种格式并没有好坏之分,纯看我的使用习惯。我就比较喜欢 yaml 格式,由于看起来比较简洁。

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC&useSSL=true
    username: 你的数据库名称
    password: 你的数据库密码

  jpa:
    hibernate:
      ddl-auto: update   #ddl-auto:设为update 表示每次都从新建表
    show-sql: true
复制代码

注意事项

  1. 使用 yaml 格式须要注意一点就是 键值对冒号后面,必须空一格
  2. application.properties 配置中文值的时候,读取出来的属性值会出现乱码问题。可是 application.yml 不会出现乱码问题。缘由是,Spring Boot 是以 iso-8859 的编码方式读取 application.properties 配置文件。 解决第二点,只需加入 spring.http.encoding.charset=UTF-8 配置便可。

后语

以上就是我对 SpringBoot 配置文件的理解与使用,固然以上只是介绍了一下 SpringBoot 配置文件的几个用法,它的用法还有很是多,想要深刻使用仍是须要各位多多深刻实践。最后,对 Python 、Java 感兴趣请长按二维码关注一波,我会努力带给大家价值,若是以为本文对你哪怕有一丁点帮助,请帮忙点好看,让更多人知道。

另外,关注以后在发送 1024 可领取免费学习资料。资料内容详情请看这篇旧文:Python、C++、Java、Linux、Go、前端、算法资料分享

一个优秀的废人
相关文章
相关标签/搜索