欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

第八节:SpringBoot指定配置文件配置三

时间:2023-06-30
SpringBoot配置属性的规则

通过.分离各个元素最后一个.将前缀与属性名称分开必须是字母(az)和数字(0-9)必须是小写字母用连字符-来分隔单词唯一允许的其他字符是[和],用于List的索引不能以数字开头 相同的配置项

Spring Boot 2.x 加载配置文件的时候会移除特殊字符并且还会将配置均用全小写的方式进行匹配和加载。

application.properties

com.rumenz.id-name=rumenzcom.rumenz.id_name=rumenzcom.rumenz.idName=rumenzcom.rumenz.idname=rumenz

测试

package com.rumenz.lession8.controller;import org.springframework.beans.factory.annotation.Value;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;@Controller@RequestMapping("/rumenz")public class RumenzController { @Value("${com.rumenz.idname}") private String comRumenzIdName; @RequestMapping("/index") @ResponseBody public String index(){ return comRumenzIdName; }}

浏览器访问http://127.0.0.1:8080/rumenz/index,返回rumenz

以上4个配置项是等价的,推荐全小写中间用-分割。

配置文件的优先级

application.properties和application.yml文件可以在放在以下几个位置。

外部:应用程序运行目录的config子目录外部:应用程序运行目录的跟目录内部:在config包里面classpath:/config/内部:在classpath根目录classpath:/ 路径参数值/springboot-zhinan/lession8/config/application.propertiescom.rumenz.level=1/springboot-zhinan/lession8/application.propertiescom.rumenz.level=2/springboot-zhinan/lession8/src/main/resources/config/application.propertiescom.rumenz.level=3/springboot-zhinan/lession8/src/main/resources/application.propertiescom.rumenz.level=4

application.properties中配置了com.rumenz.level

com.rumenz.level=1

测试

package com.rumenz.lession8.controller;import org.springframework.beans.factory.annotation.Value;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;@Controller@RequestMapping("/rumenz")public class RumenzController { @Value("${com.rumenz.idname}") private String comRumenzIdName; @Value("${com.rumenz.level}") private String comRumenzLevel; @RequestMapping("/index") @ResponseBody public String index(){ return comRumenzIdName; } @RequestMapping("/index1") @ResponseBody public String index1(){ return comRumenzLevel; }}

使用mvn clean package打包后,使用jar -jar lession8-0.0.1-SNAPSHOT.jar运行。如果上述4个地方都定义了application.properties,并且都配置了com.rumenz.level ,当我们的业务里面需要用com.rumenz.level配置项。查找的优先级是:

1.先找运行目录下的config的application.properties中的com.rumenz.level,找到返回,否则下一步2.再找运行目录下的application.properties中的com.rumenz.level,找到返回否则下一步3.再找classpath下的config目录的application.properties的com.rumenz.level,找到返回否则下一步4.再找classpath下的application.properties的com.rumenz.level,找到就返回,找不到就报错,项目启动失败。 命令行参数配置

springboot的application.properties中可以配置一些参数,如端口号,账号,密码。如果我们想在运行的时候想临时修改运行的端口也是可以的。

java -jar lession8-0.0.1-SNAPSHOT.jar --server.port=9000

这样项目运行的端口就变成了9000,--server.port=9000相当于在application.properties中配置server.port=9000

系统环境变量

我们也可以在操作系统里面定义变量,然后通过@Value注入到Spring容器中。

package com.rumenz.lession8.controller;import org.springframework.beans.factory.annotation.Value;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;@Controller@RequestMapping("/rumenz")public class RumenzController { //读取系统环境变量 @Value("${PATH}") private String path; @RequestMapping("/index2") @ResponseBody public String index2(){ return path; } }

浏览器访问http://127.0.0.1:8080/rumenz/index2,返回/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/go/bin:/usr/local/share/dotnet:~/.dotnet/tools:/usr/local/mysql/bin:/usr/local/mysql/bin

系统属性

我们可以设置VM arguments向Spring容器传递参数值。

Idea中设置VM arguments

测试

package com.rumenz.lession8.controller;import org.springframework.beans.factory.annotation.Value;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;@Controller@RequestMapping("/rumenz")public class RumenzController { @Value("${spring.test.env}") private String springTestEnv; @RequestMapping("/index3") @ResponseBody public String index3(){ return springTestEnv; }}

浏览器访问http://127.0.0.1:8080/rumenz/index3,返回test

jar包运行设置VM arguments

java -jar -Dspring.test.env=testvm lession8-0.0.1-SNAPSHOT.jar

浏览器访问http://127.0.0.1:8080/rumenz/index3,返回testvm

本小结源码地址:

GitHub:https://github.com/mifunc/springboot/tree/main/lession8

Gitee:https://gitee.com/rumenz/springboot/tree/master/lession8

https://rumenz.com/rumenbiji/springboot-config-file.html

我的博客 https://rumenz.com/ ,

我的工具箱 https://tooltt.com/

微信公众号:【入门小站】

关注【入门小站】回复【1001】获取 linux常用命令速查手册关注【入门小站】回复【1003】获取 LeetCode题解【java语言实现】关注【入门小站】回复【1004】获取 Java基础核心总结关注【入门小站】回复【1009】获取 阿里巴巴Java开发手册

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。