【Spring Boot】掌握Spring Boot:深入解析配置文件的使用与管理

05-14 阅读 0评论

【Spring Boot】掌握Spring Boot:深入解析配置文件的使用与管理

【Spring Boot】掌握Spring Boot:深入解析配置文件的使用与管理

【Spring Boot】掌握Spring Boot:深入解析配置文件的使用与管理

💓 博客主页:从零开始的-CodeNinja之路

⏩ 收录文章:【Spring Boot】掌握Spring Boot:深入解析配置文件的使用与管理

🎉欢迎大家点赞👍评论📝收藏⭐文章

目录

  • Spring Boot 配置文件
    • 一. 配置文件作用
    • 二. 配置文件的格式
    • 三. 配置 properties 文件
        • 3.1 properties 基本语法
        • 3.2 读取 properties 文件
        • 3.3 properties 缺点分析
        • 四. 配置 yml 文件
            • 4.1 yml 基本语法
            • 4.2 yml 配置不同数据类型及 null
            • 4.3 yml 的配置读取
            • 4.4 配置 集合
            • 4.5 配置 Map
            • 4.6 yml 优缺点
            • 总结

              Spring Boot 配置文件

              一. 配置文件作用

              配置文件主要是为了解决硬编码带来的问题,把可能会发生改变的信息,放在⼀个集中的地方,当我们

              动某个程序时,应用程序从配置文件中读取数据,并加载运行.

              使用配置文件,可以使程序完成用户和应用程序的交互,或者应用程序与其他应用程序的交互

              Spring Boot 配置文件

              SpringBoot支持并定义了配置文件的格式,也在另⼀个层⾯达到了规范其他框架集成到SpringBoot的

              目的.

              很多项目或者框架的配置信息也放在配置文件中,比如:

              • 项目的启动端口
              • 数据库的连接信息(包含用户名和密码的设置)
              • 第三方系统的调用密钥等信息
              • 用于发现和定位问题的普通日志和异常日志等.

                数据库连接信息 为了更方便简单的访问数据库,出现了⼀些持久层框架,其实就是对JDBC进行了更深层次的封装.让用

                ⼾通过简单⼏行代码就可完成数据库的访问.但是不同的应用程序访问的数据库不同,这些持久层框 架就需要⽀持用户可以⾃定义配置数据库的连接信息

                二. 配置文件的格式

                SpringBoot配置文件有以下三种:

                • application.properties
                • application.yml
                • application.yaml

                  yml为yaml的简写,实际开发中出现频率最高.yaml和yml的使用方式⼀样

                  当应用程序启动时,SpringBoot会⾃动从classpath路径找到并加载application.properties 和 application.yaml 或者 application.yml 文件.

                  特别注意:

                  1. 理论上讲 .properties 和 .yml 可以并存在于⼀个项目中,当 .properties 和 .yml

                    并存时,两个配置都会加载.如果配置文件内容有冲突,则以 .properties 为主,也就是

                    .properties 优先级更高.

                  2. 虽然理论上来讲 .properties 可以和 .yml 共存,但实际的业务当中,我们通常会采取⼀种

                    统⼀的配置文件格式,这样可以更好的维护(降低故障率).

                  三. 配置 properties 文件

                  properties配置文件是最早期的配置文件格式,也是创建SpringBoot项目默认的配置文件

                  3.1 properties 基本语法

                  properties是以键值的形式配置的,key和value之间是以"="连接的,如:

                  // 配置项目端口号
                  server.port=8080
                  //配置数据库连接信息
                  spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb?
                  characterEncoding=utf8&useSSL=false
                  //配置数据库的用户名
                  spring.datasource.username=root
                  //配置数据库的密码
                  spring.datasource.password=root
                  
                  3.2 读取 properties 文件

                  如果在项目中,想要主动的读取配置文件中的内容,可以使用 @Value 注解来实现。

                  @Value 注解使用" ${} "的格式读取,如下代码所示:

                  properties配置如下:

                  import org.springframework.beans.factory.annotation.Value;
                  import org.springframework.web.bind.annotation.RequestMapping;
                  import org.springframework.web.bind.annotation.RestController;
                  @RestController
                  public class PropertiesController {
                  	@Value("${mykey.key1}")
                  	private String key1;
                  	
                  	@RequestMapping("/key")
                  	public String key(){
                  		return "读取到值:"+key1;
                  	}
                  }
                  
                  3.3 properties 缺点分析

                  properties配置是以key-value的形式配置的,会产生很多的代码冗余,如下图所示:

                  【Spring Boot】掌握Spring Boot:深入解析配置文件的使用与管理

                  从上述配置key看出,properties配置文件中会有很多的冗余的信息,比如这些:

                  【Spring Boot】掌握Spring Boot:深入解析配置文件的使用与管理

                  所以在使用时,我们大多数会选用yml配置文件,yml配置文件可以很好的解决代码冗余的问题.

                  接下来我们来介绍如何去配置yml文件

                  四. 配置 yml 文件

                  yml是YAML是缩写,它的全称YetAnotherMarkupLanguage翻译成中文就是“另⼀种标记语言.

                  我们先来学习yml的语法

                  4.1 yml 基本语法

                  yml是树形结构的配置文件,它的基础语法是"key:value".

                  key和value之间使用英文冒号加空格的方式组成,空格不可省略基础语法如下:

                  使用yml连接数据库yml使用示例:

                  ```cpp
                  spring:
                  	datasource:
                  		url: jdbc:mysql://127.0.0.0:3306/dbname?characterEncoding=utf8&useSSL=false
                  		username: root
                  		password: root
                  
                  4.2 yml 配置不同数据类型及 null
                  // 字符串
                  string.value: Hello
                  // 布尔值,true或false
                  boolean.value: true
                  boolean.value1: false
                  // 整数
                  int.value: 10
                  // 浮点数
                  float.value: 3.14159
                  // Null,~代表null
                  null.value: ~
                  // "" 空字符串
                  // 直接后⾯什么都不加就可以了, 但这种方式不直观, 更多的表示是使用引号括起来
                  empty.value: ''
                  
                  4.3 yml 的配置读取

                  yml读取配置的方式和properties相同,使用@Value注解即可,实现代码如下:

                  yml配置:

                  string:
                  hello: Spring Boot
                  @RestController
                  public class ReadYml {
                  	@Value("${string.hello}")
                  	private String hello;
                  	
                  	@RequestMapping("/ymlKey")
                  	public String key(){
                  		return "读取到值:"+hello;
                  	}
                  }
                  
                  4.4 配置 集合

                  配置文件也可以配置list集合,如下所示:

                  dbtypes:
                  	name:
                  		- mysql
                  		- sqlserver
                  		- db2
                  

                  集合的读取和对象⼀样,也是使用 @ConfigurationProperties 来读取的,具体实现如下:

                  	@Component
                  	@ConfigurationProperties("dbtypes")
                  	@Data
                  	
                  	public class ListConfig {
                  		private List name;
                  	}
                  

                  访问集合的实现如下:

                  @RestController
                  public class ReadYml2 {
                  	@Autowired
                  	private ListConfig listConfig;
                  	
                  	@RequestMapping("/readList")
                  	public String readList(){
                  		return listConfig.toString();
                  	}
                  }
                  
                  4.5 配置 Map

                  配置文件也可以配置map,如下所示:

                  maptypes:
                  	map:
                  		k1: kk1
                  		k2: kk2
                  		k3: kk3
                  

                  Map的读取和对象⼀样,也是使用 @ConfigurationProperties 来读取的,具体实现如下:

                  @Component
                  @ConfigurationProperties("maptypes")
                  @Data
                  public class MapConfig {
                  	private HashMap map;
                  }
                  

                  打印类的实现如下:

                  @RestController
                  public class ReadYml2 {
                  	@Autowired
                  	private MapConfig mapConfig;
                  	
                  	@RequestMapping("/readMap")
                  	public String readStudent(){
                  		return mapConfig.toString();
                  	}
                  }
                  
                  4.6 yml 优缺点

                  优点:

                  1. 可读性高,写法简单,易于理解
                  2. ⽀持更多的数据类型,可以简单表达对象,数组,List,Map等数据形态.
                  3. ⽀持更多的编程语言,不⽌是Java中可以使用,在Golang,Python,Ruby,JavaScript中也可以使用

                    缺点:

                  4. 不适合写复杂的配置文件
                  5. 对格式有较强的要求(⼀个空格可能都会引起错误)

                  总结

                  1. properties是以key=value的形式配置的键值类型的配置文件,yml使用的是树形配置方式.

                  2. 读取配置文件内容,使用 @Value 注解,注解内使用" ${} “的格式读取.

                  3. yml层级之间使用换行缩进的方式配置,key和value之间使用”:"(英文冒号)加空格的方式设置,并

                  且空格不可省略.

                  4. properties为早期并且默认的配置文件格式,其配置存在⼀定的冗余数据,使用yml可以很好的解决

                  数据冗余的问题,但不适合复杂配置.

                  5. yml可以和properties共存,但⼀个项目中建议使用⼀种配置类型文件.


免责声明
本网站所收集的部分公开资料来源于AI生成和互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
评论列表 (暂无评论,人围观)

还没有评论,来说两句吧...

目录[+]