恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
SpringBoot配置文件详解
首页
资讯中心
/
SpringBoot配置文件详解
SpringBoot配置文件详解
发布时间:2026/10/18 5:36:26
本文从配置文件的作用、快速入手到properties与yml的语法、读取方式最后通过一个验证码案例进行综合实践目录一、配置文件的作用二、配置文件快速入手三、配置文件的格式四、properties配置文件说明4.1properties基本语法4.2读取配置文件4.3properties缺点分析五、yml配置文件5.1yml基本语法5.2yml进阶使用5.3yml优缺点一、配置文件的作用配置文件主要是为了解决硬编码带来的问题把可能会发生改变的信息放在一个集中的地方当我们启动某个程序时应用程序从配置文件中读取数据并加载运行。SpringBoot支持并定义了配置文件的格式也在另一个层面达到了规范其他框架集成到SpringleBoot的目的。很多项目或者框架的配置信息也放在配置文件中比如项目的启动端口、数据库的连接信息用户名、密码等设置、日志等项目的启动端口SpringBoot内置了Tomcat服务器默认端口号是8080但是用户电脑上8080端口号有可能就被其他应用程序占用了所以SpringBoot需要支持让用户自定义端口号。数据库连接信息为了更方便地简单地访问数据库出现了一些持久层框架其实就是对JDBC进行了更胜层次地封装让用户通过简单几行代码可完成数据库的访问。但是不同的应用程序访问的数据库不同这些持久层框架就需要支持用户可以自定义配置数据库的连接信息。二、配置文件快速入手修改application.properties文件重新运行程序观察日志显示Tomcat启动端口号为9090。三、配置文件的格式SpringBoot配置文件有以下三种方式application.properties、application.yml、application.yamlyml为yaml的简写本文只讲yml文件的使用当程序启动时SpringBoot会自动从classpath路径找到并加载application.properties和application.yml文件。注意理论上.properties和.yml可以并存在于一个项目中当.properties和.yml并存时两个配置都会加载。如果配置文件内容有所冲突则以.properties为主也就是.properties优先级高。四、properties配置文件说明4.1properties基本语法properties是以键值对的形式配置的key和value之间以连接# 配置项目端口号server.port8080# 配置数据库连接信息spring.datasource.urljdbc:mysql://127.0.0.1:3306/testdb?characterEncodingutf8useSSLfalsespring.datasource.usernamerootspring.datasource.passwordroot4.2读取配置文件如果在项目中想要主动地读取配置文件中的内容可以使用Value注解来实现。Value注解使用${ }的格式读取如下代码所示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; } }4.3properties缺点分析properties配置是以keyvalue的形式配置的spring.datasource.urljdbc:mysql://127.0.0.1:3306/testdb?characterEncodingutf8useSSLfalsespring.datasource.usernamerootspring.datasource.passwordrootproperties配置文件中有很多冗余的信息相比之下yml配置文件就简单点五、yml配置文件5.1yml基本语法yml是树形结构的配置文件它的基础语法是key value。key和value之间使用英文冒号空格的方式组成空格不可省略# 正确的配置方式冒号后面必须要有空格key1: java# 错误的配置方式key2:java2使用yml连接数据库spring:datasource:url: jdbc:mysql://127.0.0.1:3306/dbname?characterEncodingutf8useSSLfalseusername: rootpassword: root5.2yml进阶使用yml配置不同数据类型及null# 字符串string.value: Hello# 布尔值true 或 falseboolean.value: trueboolean.value1: false# 整数int.value: 10# 浮点数float.value: 3.14159# Null~代表 nullnull.value: ~# 空字符串empty.value: yml配置读取string:hello: biteRestController public class ReadYml { Value(${string.hello}) private String hello; RequestMapping(/ymlKey) public String key() { return 读取到值: hello; } }配置对象student:id: 1name: Javaage: 18student: {id: 1, name: Java, age: 18}此时需要使用ConfigurationProperties来读取import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; ConfigurationProperties(prefix student) Component Data public class Student { private int id; private String name; private int age; }RestController public class StudentController { Autowired private Student student; RequestMapping(/readStudent) public String readStudent() { return student.toString(); } }5.3yml优缺点优点可读性高写法简单易于理解支持更多的数据类型可以简单表达对象、数组、List、Map等数据形态支持更多的编程语言缺点不适合写复杂的配置文件。比如prorperties格式keycloak.realmdemokeycloak.resourcefm-cache-cloudkeycloak.credentials.secretd4589683-0ce7-4982-bcd3keycloak.security[0].authRoles[0]userkeycloak.security[0].collections[0].namessologinurlkeycloak.security[0].collections[0].patterns[0]/login/*转换成ymlkeycloak:realm: demoresource: fm-cache-cloudcredentials:secret: d4589683-0ce7-4982-bcd3security:- authRoles:- usercollections:- name: ssologinurlpatterns:- /login/*转换过程比较花费精力可读性会变差