SpringBoot配置文件详解

简介: 本文目录1. 可以不用配置文件吗2. 配置文件格式3. 自定义配置项4. 指定对象绑定配置5. 在配置文件中使用随机数6. 自定义配置文件7. 引用配置项8. 总结

1. 可以不用配置文件吗

完全可以不用配置文件,直接启动就行,参数都是默认的。


就算用配置文件,这个配置文件跟Spring中那种繁琐的配置文件也完全不是一个概念。


SpringBoot的配置文件非常简单!今天就来聊聊。


2. 配置文件格式

SpringBoot支持两种配置文件.properties配置文件和.yml配置文件,虽然官方号称是推荐.yml配置文件,但是我实际看到的还是以.properties配置文件居多点。


这两种格式其实没有本质区别.properties文件使用.分割语义,而.yml文件使用缩进分割意义(有点像Python哈哈)。


所以我们只要掌握了一种配置,就可以翻译为另一种配置。例如配置项目启动端口。


# .properties文件配置方法


# .yml配置方法

server:

  port: 1007 #务必注意冒号后面要有个空格 不然不生效哈

,SpringBoot项目启动时加载的配置文件名默认为application.properties或application.yml,不建议老铁你同时建立这两个文件,纯属闲的没事找事。


TIPS SpringBoot2.x中可以使用server.servlet.context-path=/xxx配置项目的访问路径,而SpringBoot1.x中配置方法为server.context-path=/xxx,不知道为啥搞得不一样了,不向前兼容是很烦的一件事!


3. 自定义配置项

可以自定义一些配置项,然后在项目中直接使用,例如我们通常会习惯将微信公众号相关的参数放到配置文件中便于修改,而不是写死到代码中,每次修改还得重新编译程序。


# 配置端口

server.port=1007


# 公众号的appid

wxmp.appid=111

# 公众号的secret

wxmp.secret=222


然后注入到组件中,这样容器在启动时就可以将配置内容注入组件。


/**

* 微信公众号参数

*/

@Component//注册为组件

public class WxMpParam {

@Value("${wxmp.appid}")//注入wxmp.appid配置项

private String appid;

@Value("${wxmp.secret}")//注入wxmp.secret配置项

private String secret;

}


4. 指定对象绑定配置

如下同样生效,注意@Data不能省略


/**

* 微信公众号参数

*/

@Component//注册为组件

@EnableConfigurationProperties//启用配置绑定组件功能

@ConfigurationProperties(prefix="wxmp")//指定组件绑定的前缀

@Data//需要开启get/set,以便注入

public class WxMpParam {

private String appid;//自动匹配到wxmp.appid

private String secret;//自动匹配到wxmp.secret

}


5. 在配置文件中使用随机数

配置文件中使用随机数也是比较常见的场景,尤其启动多个客户端时,希望指定一个启动端口的范围,例如10-20,可配置如下:


# 配置端口为1-20间的随机数

server.port=${random.int[10,20]}


这样我可以连续启动四个客户端,启动端口分别为:12、13、17、19,可见是随机的,而且在我指定的范围内波动。


6. 自定义配置文件

有时候参数太多,都放到一个配置文件中太乱了,我们会希望将配置分到不同文件中,然后每个文件保存不同配置。


例如上面微信公众号配置,我们单独摘出来,放到wxmp.properties中。


# wxmp.properties


# 公众号的appid

wxmp.appid=111

# 公众号的secret

wxmp.secret=222


让我们在组件注入时代码如下:


/**

* 微信公众号参数

*/

@Component // 注册为组件

@PropertySource(value = "classpath:wxmp.properties", encoding = "utf-8") // 指定配置文件及编码

public class WxMpParam {

  @Value("${wxmp.appid}")

  private String appid;

  @Value("${wxmp.secret}")

  private String secret;

}


当然我们也可以结合绑定对象的语法,修改如下:


/**

* 微信公众号参数

*/

@Component//注册为组件

@EnableConfigurationProperties//启用配置绑定组件功能

@ConfigurationProperties(prefix="wxmp")//指定组件绑定的前缀

@PropertySource(value = "classpath:wxmp.properties", encoding = "utf-8") // 指定配置文件及编码

@Data//需要开启get/set,以便注入

public class WxMpParam {

private String appid;//自动匹配到wxmp.appid

private String secret;//自动匹配到wxmp.secret

}


7. 引用配置项

Spring Boot配置项是可以引用其他配置项的值的,这个稍微提一下,例如:


# wxmp.properties


# 公众号的appid

wxmp.appid=111

# 公众号的secret,值为111222

wxmp.secret=${wxmp.appid}222


8. 总结

配置少,就直接在application.properties写写就完了。


配置多,就分出几个配置文件来。


如果一个配置文件中配置项很多,也可以考虑让配置绑定对象,免得重复写前缀。


SpringBoot提供了足够灵活的配置文件使用机制,让我们灵活运用!

相关文章
|
2月前
|
Java 容器
SpringBoot读取resources下的文件以及resources的资源路径
SpringBoot读取resources下的文件以及resources的资源路径
52 0
|
2月前
|
JavaScript 前端开发 Java
springboot整合minio+vue实现大文件分片上传,断点续传(复制可用,包含minio工具类)
springboot整合minio+vue实现大文件分片上传,断点续传(复制可用,包含minio工具类)
802 0
|
2月前
|
Java
SpringBoot文件上传单文件多文件上传
SpringBoot文件上传单文件多文件上传
23 0
|
10天前
|
前端开发 安全 Java
实现Spring Boot中的文件分片上传通常涉及到以下几个步骤和考虑的关键点
实现Spring Boot中的文件分片上传通常涉及到以下几个步骤和考虑的关键点
25 2
|
2月前
|
安全 JavaScript Java
springboot实现文件防盗链设计
`shigen`,一位专注于Java、Python、Vue和Shell的博主,分享成长和技术。近期将探讨SpringBoot实现图片防盗链,通过限制`Referer`防止资源被盗用。基础版通过`WebMvcConfigurer`配置静态资源,升级版添加拦截器检查`Referer`,确保请求来源合法性。详细代码实现和案例可在文中链接找到。一起学习,每天进步!
70 14
springboot实现文件防盗链设计
|
2天前
|
Java Maven
SpringBoot快速入门,写一个简单的HelloWorld文件
SpringBoot快速入门,写一个简单的HelloWorld文件
|
5天前
|
Java 测试技术 数据库
【单文件版本】java SpringBoot 切换不同的运行环境(生产环境、开发环境、测试环境)SpringBoot配置多个不同运营环境
【单文件版本】java SpringBoot 切换不同的运行环境(生产环境、开发环境、测试环境)SpringBoot配置多个不同运营环境
12 0
|
2月前
|
Java 数据安全/隐私保护 开发者
【SpringBoot】讲清楚日志文件&&lombok
【SpringBoot】讲清楚日志文件&&lombok
42 5
|
2月前
|
Java Nacos 数据安全/隐私保护
springboot使用configtree读取树形文件目录中的配置
springboot使用configtree读取树形文件目录中的配置
springboot使用configtree读取树形文件目录中的配置
|
2月前
|
JSON 前端开发 JavaScript
Vue+Axios+SpringBoot后端同时接收文件和json作为请求参数
Vue+Axios+SpringBoot后端同时接收文件和json作为请求参数
107 0