内容简介:微信公众号:一个优秀的废人如题,今天解析下 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 原理与实战
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Learn Python the Hard Way
Zed Shaw / Example Product Manufacturer / 2011
This is a very beginner book for people who want to learn to code. If you can already code then the book will probably drive you insane. It's intended for people who have no coding chops to build up t......一起来看看 《Learn Python the Hard Way》 这本书的介绍吧!