资讯专栏INFORMATION COLUMN

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

chenjiang3 / 358人阅读

摘要:前言如题,今天解析下的配置文件。这时我们就可以用的属性来配置随机数,比如随机字符串随机随机以内的随机数的随机数使用多配置文件很多时候我们开发项目都需要很多套环境,比如有测试环境,开发环境以及生产环境。原因是,是以的编码方式读取配置文件。

</>复制代码

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

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

自定义属性加载

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

首先在项目根目录下加入以下自定义属性:

</>复制代码

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

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

</>复制代码

  1. package com.nasus.bean;
  2. import lombok.Data;
  3. import org.springframework.beans.factory.annotation.Value;
  4. import org.springframework.stereotype.Component;
  5. /**
  6. * Project Name:springboot_properties_demo
  7. * Package Name:com.nasus.properties
  8. * Date:2019/1/28 20:59
  9. * Description: TODO: 描述该类的作用
  10. * @author nasus
  11. */
  12. @Data
  13. @Component
  14. public class PropertiesBean {
  15. @Value("${com.nasus.author.name}")
  16. private String name;
  17. @Value("${com.nasus.article.title}")
  18. private String title;
  19. @Value("${com.nasus.doing}")
  20. private String desc;
  21. }

之后新建 controller 测试自定义属性加载,代码如下:

</>复制代码

  1. package com.nasus.controller;
  2. import com.nasus.bean.PropertiesBean;
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.web.bind.annotation.GetMapping;
  5. import org.springframework.web.bind.annotation.RequestMapping;
  6. import org.springframework.web.bind.annotation.RestController;
  7. /**
  8. * Project Name:springboot_properties_demo
  9. * Package Name:com.nasus.controller
  10. * Date:2019/1/28 21:41
  11. * Description: TODO: 测试自定义属性加载
  12. *
  13. * @author nasus
  14. */
  15. @RestController
  16. @RequestMapping("/test")
  17. public class TestController {
  18. @Autowired
  19. private PropertiesBean propertiesBean;
  20. @GetMapping("/getInfo")
  21. public PropertiesBean getInfo(){
  22. return propertiesBean;
  23. }
  24. }

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

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

参数间的引用

配置文件代码如下:

</>复制代码

  1. # 防止读取乱码
  2. spring.http.encoding.charset=UTF-8
  3. # 项目启动端口
  4. server.port=9999
  5. # 自定义配置
  6. com.nasus.author.name=一个优秀的废人
  7. com.nasus.article.title=SpringBoot配置文件详解
  8. com.nasus.doing=${com.nasus.author.name}写文章《${com.nasus.article.title}

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

使用随机数

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

</>复制代码

  1. # 随机字符串
  2. com.nasus.article.value=${random.value}
  3. # 随机int
  4. com.nasus.article.number=${random.int}
  5. # 随机long
  6. com.nasus.article.bignumber=${random.long}
  7. # 10以内的随机数
  8. com.nasus.article.test1=${random.int(10)}
  9. # 10-20的随机数
  10. com.nasus.article.test2=${random.int[10,20]}
使用多配置文件

很多时候我们开发项目都需要很多套环境,比如有测试环境,开发环境以及生产环境。不同的环境就需要使用不同的配置文件,为此我们可以根据这 3 个环境分别新建 以下 3 个配置文件。

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

项目中默认的配置文件是 application.properties 。这时我们可以根据自己的环境去使用相应的配置文件,比如说,项目各个环境的端口必须不一样。那我们可以这样配置:
application-dev.properties:开发环境

</>复制代码

  1. server.port=6666

application-test.properties:测试环境

</>复制代码

  1. server.port=7777

application-prod.properties:生产环境

</>复制代码

  1. server.port=8888

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

</>复制代码

  1. spring.profiles.active=prod
配置数据库

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

</>复制代码

  1. spring:
  2. datasource:
  3. driver-class-name: com.mysql.jdbc.Driver
  4. url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC&useSSL=true
  5. username: 你的数据库名称
  6. password: 你的数据库密码
  7. jpa:
  8. hibernate:
  9. ddl-auto: update #ddl-auto:设为update 表示每次都重新建表
  10. show-sql: true
注意事项

使用 yaml 格式需要注意一点就是 键值对冒号后面,必须空一格

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、前端、算法资料分享

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/73233.html

相关文章

  • SpringBoot 实战 (二) | 第一个 SpringBoot 工程详解

    摘要:代码如下可以看到中一共有个依赖,其中只有是我手动加入的,用于单元测试。点击项目启动按钮,效果如下好的程序必须配备完善的单元测试。测试结果如下可以看到红圈框住的地方,出现这个绿色标志证明单元测试没问题。 微信公众号:一个优秀的废人如有问题或建议,请后台留言,我会尽力解决你的问题。 前言 哎呦喂,按照以往的惯例今天周六我的安排应该是待在家学学猫叫啥的。但是今年这种日子就可能一去不复返了,没...

    GeekQiaQia 评论0 收藏0
  • 写这么多系列博客,怪不得找不到女朋友

    摘要:前提好几周没更新博客了,对不断支持我博客的童鞋们说声抱歉了。熟悉我的人都知道我写博客的时间比较早,而且坚持的时间也比较久,一直到现在也是一直保持着更新状态。 showImg(https://segmentfault.com/img/remote/1460000014076586?w=1920&h=1080); 前提 好几周没更新博客了,对不断支持我博客的童鞋们说声:抱歉了!。自己这段时...

    JerryWangSAP 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<