内容简介:微信公众号:一个优秀的废人如题,今天解析下 SpringBoot 的配置文件。首先构建 SpringBoot 项目,不会的看这篇旧文
微信公众号:一个优秀的废人
前言
如题,今天解析下 SpringBoot 的配置文件。
自定义属性加载
首先构建 SpringBoot 项目,不会的看这篇旧文 使用 IDEA 构建 Spring Boot 工程 。
首先在项目根目录下加入以下自定义属性:
# 防止读取乱码 spring.http.encoding.charset=UTF-8 # 项目启动端口 server.port=9999 # 自定义配置 com.nasus.author.name=一个优秀的废人 com.nasus.article.title=SpringBoot配置文件详解
使用 @value 注解读取配置文件属性:
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 查看加载结果:
可以看到,加入 @value 注解之后,配置文件的属性都被读取出来了。以前,或许我们还需要专门写一个读取配置文件的 工具 类才能把属性读取出来,现在有了 Spring ,我们可以直接使用 @value 就能读取了,简直不能太方便。本例源码在这: github 地址
参数间的引用
配置文件代码如下:
# 防止读取乱码 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
注意事项
- 使用 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 、前端、算法资料分享
以上所述就是小编给大家介绍的《SpringBoot实战 | 配置文件详解》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- Flutter 完整开发实战详解(十六、详解自定义布局实战)
- ConstraintLayout 2.0 新特性详解及实战
- SpringBoot 实战 (二) | 第一个 SpringBoot 工程详解
- 【JS必知必会】高阶函数详解与实战
- 详解谷歌最强NLP模型BERT(理论+实战)
- Apache Flink 进阶(八):详解 Metrics 原理与实战
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。