SpringBoot项目配置文件 矫情吗;* 2024-03-23 19:43 12阅读 0赞 #### 文章目录 #### * * 一、配置文件作用 * 二、配置文件格式 * 三、properties配置文件说明 * * 基本语法 * 读取配置文件 * 优缺点 * 四、yml配置文件说明 * * 基本语法 * 使用yml连接数据库 * 使用yml配置不同数据类型及null * yml配置的读取 * 配置字符串的单双引号问题 * 配置对象 * 两种格式配置文件对比 * properties格式配置文件示例 * yml格式配置文件示例 * 设置不同环境配置文件演示 ### 一、配置文件作用 ### **存放项目中比较重要的数据**。 比如数据库的连接信息(包括用户名和密码设置)、项目的启动端口、第三方系统的调用密匙等信息、用于发现和排查定位问题的普通日志和异常日志等。 ### 二、配置文件格式 ### SpringBoot配置文件主要分为两种格式`.properties`和`.yml` ![\[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KxZ0dj8u-1691464486374)(F:\\typora插图\\image-20230509161053491.png)\]][img-KxZ0dj8u-1691464486374_F_typora_image-20230509161053491.png] 其中.properties类型的配置文件是默认的,两者可以同时存在,但实际开发中公司会规定使用哪一种。 properties类型的适合新手,不容易出错但是比较繁琐;yml比较简洁但是容易出错。一般初学使用前者,实际开发中后者使用居多。 下边详细说明,并进行对比。 ### 三、properties配置文件说明 ### #### 基本语法 #### 键值形式:key=value 如:`server.port=9090` #### 读取配置文件 #### 一般来讲,配置文件会随着spring容器的启动而自动加载,但是也可以主动读取配置文件中的内容,通过@Value注解实现。 **使用方式:@Value+“$\{\}”格式读取** 例如: ![\[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WXzRnI8R-1691464486374)(F:\\typora插图\\image-20230509162213332.png)\]][img-WXzRnI8R-1691464486374_F_typora_image-20230509162213332.png] package com.example.demo.component; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; @Component public class ReadConfig { @Value("${server.port}") private String port;//这里接受类型一般是String,一般什么都能接收 @PostConstruct public void postConstruct(){ System.out.println("Read Config:port:"+port); } } ![\[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iM2ZNCz2-1691464486375)(F:\\typora插图\\image-20230509162248225.png)\]][img-iM2ZNCz2-1691464486375_F_typora_image-20230509162248225.png] #### 优缺点 #### <table> <thead> <tr> <th>优点</th> <th>1.是默认的 2.优先级高于yml 3.写法简单,不易出错</th> </tr> </thead> <tbody> <tr> <td>缺点</td> <td>1.写法比较冗余</td> </tr> </tbody> </table> 为什么说比较冗余呢? 看这几个配置项即可: ![\[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-32gkGoZj-1691464486375)(F:\\typora插图\\image-20230509162550735.png)\]][img-32gkGoZj-1691464486375_F_typora_image-20230509162550735.png] 而同样的配置项在yml格式下就会简便很多,如下所示: spring: datasource: url: jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8 username: root password: root ### 四、yml配置文件说明 ### #### 基本语法 #### `key: value` 例如: server: port: 9090 注意:冒号后边要加空格,不然不生效!!!!! #### 使用yml连接数据库 #### spring: datasource: url: jdbc:mysql://127.0.0.0:3306/dbname?characterEncoding=utf8 username: root password: root #### 使用yml配置不同数据类型及null #### # 字符串 string.value: Hello # 布尔值,true或false boolean.value: true boolean.value1: false # 整数 int.value: 10 int.value1: 0b1010_0111_0100_1010_1110 # ⼆进制 # 浮点数 float.value: 3.14159 float.value1: 314159e-5 # 科学计数法 # Null,~代表null null.value: ~ #### yml配置的读取 #### 读取配置的⽅式和 properties 相同,使⽤ @Value 注解即可 。 注:这里需要把properties文件删了,不然读不到yml的配置 package com.example.demo.component; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; @Component public class ReadConfig { @Value("${server.port}") private String port;//这里接受类型一般是String,一般什么都能接收 @PostConstruct public void postConstruct(){ System.out.println("Read Config:port:"+port); } } ![\[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ajDBvrYt-1691464486376)(F:\\typora插图\\image-20230509163606523.png)\]][img-ajDBvrYt-1691464486376_F_typora_image-20230509163606523.png] 注意:读取值为 null 的配置和根本不存在的配置结果不⼀致,是两回事,要注意区分。前者能正常启动而后者直接报错。 #### 配置字符串的单双引号问题 #### 准备工作: ![\[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CeRqRtH8-1691464486376)(F:\\typora插图\\image-20230509164434054.png)\]][img-CeRqRtH8-1691464486376_F_typora_image-20230509164434054.png] package com.example.demo.component; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; @Component public class ReadConfig { @Value("${string.str1}") private String str1; @PostConstruct public void postConstruct1(){ System.out.println("Read Config:str1"+str1); } @Value("${string.str2}") private String str2; @PostConstruct public void postConstruct2(){ System.out.println("Read Config:str2"+str2); } @Value("${string.str3}") private String str3; @PostConstruct public void postConstruct3(){ System.out.println("Read Config:str3"+str3); } } 运行结果: ![\[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JWrW2xGP-1691464486377)(F:\\typora插图\\image-20230509164407301.png)\]][img-JWrW2xGP-1691464486377_F_typora_image-20230509164407301.png] 结论: 1. 字符串默认不需要加单双引号 2. 单引号中转义字符只是一个普通的字符串数据 3. 双引号中,转义字符串会表达出来对应的特殊含义 #### 配置对象 #### 使用@ConfigurationProperties注解: package com.example.demo.component; import lombok.Data; import lombok.Setter; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @ConfigurationProperties(prefix = "student") @Component @Data public class StudentComponent { private int id; private String name; } 向ReadConfig中添加代码: ![\[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m9hBIiTQ-1691464486377)(F:\\typora插图\\image-20230509165612780.png)\]][img-m9hBIiTQ-1691464486377_F_typora_image-20230509165612780.png] ![\[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4s7AvpDo-1691464486377)(F:\\typora插图\\image-20230509165510178.png)\]][img-4s7AvpDo-1691464486377_F_typora_image-20230509165510178.png] 运行结果: ![\[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b5FoUC3V-1691464486378)(F:\\typora插图\\image-20230509165456316.png)\]][img-b5FoUC3V-1691464486378_F_typora_image-20230509165456316.png] 另外,还可以配置集合读取集合,当然他也是使用@Configuration来做的 系统配置项很多,有需要查看[官网][Link 1]即可 ### 两种格式配置文件对比 ### 1. 语法格式上不同,properties使用=连接key和value,yml使用:+空格+换行缩进连接key和value 2. 通用性上不同,yml支持更多语言 ### properties格式配置文件示例 ### 补充:两种文件都可以使用\#写注释 ![\[外链图片转存中...(img-nlO4W1of-1691464486378)\]][..._img-nlO4W1of-1691464486378] ### yml格式配置文件示例 ### ![\[外链图片转存中...(img-NMJeoq0f-1691464486379)\]][..._img-NMJeoq0f-1691464486379] ### 设置不同环境配置文件演示 ### 设置成开发环境的端口号: ![\[外链图片转存中...(img-eoEoExdL-1691464486379)\]][..._img-eoEoExdL-1691464486379] 设置成测试环境的端口号同样能启动: ![\[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iRguo1V8-1691464486379)(F:\\typora插图\\image-20230509172024790.png)\]][img-iRguo1V8-1691464486379_F_typora_image-20230509172024790.png] [img-KxZ0dj8u-1691464486374_F_typora_image-20230509161053491.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/52df643292f8411aa5d7433886e41bf5.png [img-WXzRnI8R-1691464486374_F_typora_image-20230509162213332.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/4bd71629b21349919a398e55865dc89b.png [img-iM2ZNCz2-1691464486375_F_typora_image-20230509162248225.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/d4dc46480ea14308b37e87cbfc2a1e04.png [img-32gkGoZj-1691464486375_F_typora_image-20230509162550735.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/64401fdff9b0485784c4329fc4a02628.png [img-ajDBvrYt-1691464486376_F_typora_image-20230509163606523.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/1c69bd18fb354e41b50c2ff481008828.png [img-CeRqRtH8-1691464486376_F_typora_image-20230509164434054.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/51d4472f50314a568e8ab776b4b39b72.png [img-JWrW2xGP-1691464486377_F_typora_image-20230509164407301.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/62d945e85b2047119480dddf7c018918.png [img-m9hBIiTQ-1691464486377_F_typora_image-20230509165612780.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/211a7752bcc9476eb885495674e98099.png [img-4s7AvpDo-1691464486377_F_typora_image-20230509165510178.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/ccd8cba6777a4498bcf71f657e28f9fc.png [img-b5FoUC3V-1691464486378_F_typora_image-20230509165456316.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/0b6a24a3e7924c459db872e10676cad6.png [Link 1]: https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html#application-properties [..._img-nlO4W1of-1691464486378]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/aa5ffe5f868d478d93dc3e902e1816c1.png [..._img-NMJeoq0f-1691464486379]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/017e8a79a504487285f395bdc3876880.png [..._img-eoEoExdL-1691464486379]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/a4c73cd4cc5a419ca4f82649ba64dd58.png [img-iRguo1V8-1691464486379_F_typora_image-20230509172024790.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/14/3a1b24cbb5b84f9dbf4d0e9d28a5a9e9.png
相关 springboot 项目日志配置文件详解 spring boot 项目指定 日志配置文件 在Spring Boot项目中,可以通过在`application.properties`或`application.ym ゞ 浴缸里的玫瑰/ 2024年03月24日 18:54/ 0 赞/ 21 阅读
相关 【项目实战】SpringBoot配置文件 一、Spring Boot的配置文件 Spring Boot项目使用一个全局的配置文件 Spring Boot的配置文件名是固定的application.proper 一时失言乱红尘/ 2024年03月24日 13:52/ 0 赞/ 23 阅读
相关 SpringBoot项目配置文件 文章目录 一、配置文件作用 二、配置文件格式 三、properties配置文件说明 基本语法 矫情吗;*/ 2024年03月23日 19:43/ 0 赞/ 13 阅读
相关 springboot项目如何将配置文件外挂 为什么要将配置文件外挂 因为springboot项目一般打出来的是jar包,如果要对里面的配置做修改,会比较麻烦,所以需要将配置文件外挂,方便操作哦 怎么做呢 我 向右看齐/ 2024年03月16日 23:21/ 0 赞/ 26 阅读
相关 SpringBoot(项目创建使用+配置文件+日志文件) 目录 1. Spring Boot 项目创建 2. 写一个 Hello World 并运行 3. 配置文件的作用及格式 4. properties 配置文件的基本语法 Myth丶恋晨/ 2023年09月25日 14:01/ 0 赞/ 88 阅读
相关 springboot指定配置文件启动项目 一. ide下的springboot启动\ springboot项目有如下配置文件 有一个主配置文件application.yml, 在主配置文件里指定实际使用的配置文件 太过爱你忘了你带给我的痛/ 2023年01月13日 15:54/ 0 赞/ 228 阅读
相关 SpringBoot项目读取json配置文件 SpringBoot项目读取json格式文件配置 https://my.oschina.net/boonya/blog/3166788 Springboot下jar如何读 叁歲伎倆/ 2022年10月11日 12:06/ 0 赞/ 137 阅读
相关 springboot项目公共配置文件抽取 > 背景:部署多个服务,但是每个里面有很多相同的配置,这些配置每次部署都需要更改 > 目标:希望配置文件里面的运维相关的配置抽取到公共目录,实现统一管理,一改全改 > 我就是我/ 2022年08月28日 12:40/ 0 赞/ 246 阅读
相关 SpringBoot项目——读取配置文件及自定义配置文件 文章目录 一、读取默认配置文件 二、读取自定义配置文件 1、步骤 2、实 Bertha 。/ 2022年03月17日 02:18/ 0 赞/ 455 阅读
还没有评论,来说两句吧...