Spring Boot 配置文件
创始人
2024-11-22 00:04:18
0

在这里插入图片描述

T04BF

👋专栏: 算法|JAVA|MySQL|C语言

🫵 今天你敲代码了吗

文章目录

    • 5.SpringBoot配置文件
      • 5.1 配置文件作用
      • 5.2 配置文件入手
      • 5.3 配置文件的格式
        • 存在多个配置文件
      • 5.4 properties配置文件说明
        • 5.4.1 基本语法
        • 5.4.2 读取配置文件
        • 5.4.3 缺点
      • 5.5 yml配置文件说明
        • 5.5.1 语法说明
        • 5.5.2 使用进阶
          • 配置不同数据类型及null
            • 读取
          • 配置对象
          • 配置集合
          • 配置Map
        • 5.5.3 缺点

5.SpringBoot配置文件

5.1 配置文件作用

配置文件主要是用来解决硬编码带来的问题,把可能会发生改变的信息,放在用一个集中的地方,当我们启动某个程序的时候,应用程序从配置文件中读取数据,并加载运行

所谓"硬编码"是值,将数据直接嵌入到程序或其他可执行对象的源代码中,也就是将代码写死,就比如手机字体大小,如果采用硬编码的方式,就直接在程序中指定字体大小,所有的用户使用的都是同一个字体大小

但是实际上不同的用户有不同的选择,就可以将字体大小放在配置文件里面,当程序启动的时候,读取配置信息,以用户设置的字体大小来显示

SpringBoot配置文件

SpringBoot支持并定义了配置文件的格式,很多项目或者框架的的配置信息也放在配置文件里面,比如:

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

5.2 配置文件入手

Spring内置的Tomcat服务器的默认端口是8080,但是如果8080端口号已经被其他进程使用了呢? 我们可以通过配置文件来修改服务器的端口号

SpringBoot在创建项目的时候,就已经帮我们创建了配置文件


我们尝试修改这个配置文件:

server.port=9090 


此时显示的Tomcat启动的端口号就是9090了

5.3 配置文件的格式

Spring Boot的配置文件有以下三种格式:

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

(实际上,yml是yaml的简写,使用方式一样)

当程序启动的时候,Spring Boot会自动从classpath路径找到并加载三种配置文件

存在多个配置文件







那么此时启动的端口号是多少??


可以看出,如果配置文件里面的内容有冲突,则以.properties为主,如果不冲突,则两个都起作用

5.4 properties配置文件说明

5.4.1 基本语法

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

# 配置项目端口号 server.port=9090  # 配置数据库连接信息 spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb?charsetEncoding=utf8&useSSL=false spring.datasource.username=root spring.datasource.password=root 

5.4.2 读取配置文件

使用 @value注解来主动读取配置文件里面的内容
@value注解使用${}的格式读取

# 配置信息 mykey.key1 = jwcb 
@RestController public class PropertiesController {     @Value("${mykey.key1}")     private String key1;      @RequestMapping("/getKey")     public String getKey() {         return "读到的值为" + key1;     } } 

访问结果为:

5.4.3 缺点

由于properties是以键值对的格式配置的,就会存有很很多的冗余的信息

5.5 yml配置文件说明

5.5.1 语法说明

yml是树形结构的配置文件,他的基础语法是"key:value"
key和value之间用冒号加空格的方式组成,空格不可省略

# 正确配置 key1: jwbc  # 错误配置 key2:jwbc 

使用yml连接数据库

spring:   datasource:     url: jdbc:mysql://127.0.0.0:3306/dbname?characterEncoding=utf8&useSSL=false     username: root     password: root 

5.5.2 使用进阶

配置不同数据类型及null
# 字符串 string:    value: Hello  # 布尔值 boolean:   value: true  # 整数 int:    value: 1  # 浮点数 float:    value: 1.1  # null(~代表null) null:   value: ~  # 空字符串(直接什么都不跟也可以) empty:   value: '' 

读取

与properties类似,使用@value即可
访问后得到:

** 如果value加上单双引号:**

# 字符串 string:   value1: Hello \n Hi   value2: 'Hello \n Hi'   value3: "Hello \n Hi" 
@RestController public class YmlController {      @Value("${string.value1}")     private String str1;      @Value("${string.value2}")     private String str2;      @Value("${string.value3}")     private String str3;      @RequestMapping("/getYml")     public void getYml() {         System.out.println(str1);         System.out.println(str2);         System.out.println(str3);     } } 

访问后结果为:

可以看出:

  • 字符串默认不用加上单双引号
  • 加上单引号后,会转义特殊字符
  • 双引号不会转义特殊字符
配置对象
student:    id: 1   name: zhangsan   age: 18 

此时读取的时候要通过@ConfigurationProperties实现

@Component @ConfigurationProperties(prefix = "student")//prefix即前缀的意思 @Data public class Student {     private int id;     private String name;     private int age; }    @RestController public class YmlController {     @Autowired     private Student student;      @RequestMapping("getStudent")     public Student getStudent() {         return student;     } } 

访问后得到:

就是我们配置的数据

配置集合
studentlist:    name:      - zhangsan     - lisi     - wangwu 

读取的时候也是通过@ConfigurationProperties实现

@Configuration @ConfigurationProperties("studentlist") @Data public class ListConfig {     private List name; }    @RestController public class ListConfigController {     @Autowired     private ListConfig listConfig;      @RequestMapping("/getList")     public String getList() {         return listConfig.toString();     } } 


配置Map
mapexample:   map:     k1: k11     k2: k22     k3: k33 
a @Component @ConfigurationProperties("mapexample") public class MapConfig {     private HashMap map; }   @RestController public class MapConfigController {     @Autowired     private MapConfig mapConfig;      @RequestMapping("/getMap")     public MapConfig getMap() {         return mapConfig;     } } 


5.5.3 缺点

不适合写复杂的配置文件

感谢您的访问!!期待您的关注!!!

在这里插入图片描述

T04BF

🫵 今天记得敲代码

相关内容

热门资讯

发现一款!(Wepoke辅助器... 《Wepoke辅助器软件透明挂》是一款多人竞技的Wepoke辅助器辅助透视游戏,你将微扑克对手来到同...
一分钟秒懂!wepoker俱乐... 一分钟秒懂!wepoker俱乐部辅助,wepoker透视破解版,细节方法(有挂套路)-哔哩哔哩是一款...
5分钟了解!aAPOKER软件... 5分钟了解!aAPOKER软件透明挂,多乐辅助器免费版,详细教程(有挂总结)-哔哩哔哩;POKER软...
8分钟测试!微扑克wpk插件,... 8分钟测试!微扑克wpk插件,aapoker线上规律,Wepoke工具确实有挂其实是有挂(2021已...
查到实测辅助!Wepoke稳定... 您好,Wepoke稳定这款游戏可以开挂的,确实是有挂的,需要了解加微【757446909】很多玩家在...
实测交流!(wpk新版)微扑克... 实测交流!(wpk新版)微扑克系统机制(软件透明挂)确切有挂原来一直都是有挂(2023已更新)(哔哩...
重大科普!htx矩阵wepok... 重大科普!htx矩阵wepoker辅助,wepoker透视器免费,技巧教程(有挂动态)-哔哩哔哩重大...
5分钟了解!wPk软件透明挂,... 5分钟了解!wPk软件透明挂,哈狗三缺一辅助软件靠谱的,详细教程(果真有挂)-哔哩哔哩,是用手机号来...
十分钟工具!红龙扑克辅助工具,... 十分钟工具!红龙扑克辅助工具,微扑克辅助软件下载,Wepoke轻量版其实一直都是有挂(2023已更新...
一起来讨论!WEPOke原来是... 您好,WEPOke这款游戏可以开挂的,确实是有挂的,需要了解加微【136704302】很多玩家在这款...