SpringBoot学习2-配置文件
配置文件介绍
在创建SpringBoot项目时,会自动创建一个配置文件如下 未修改的后缀名应为.properties,后续会介绍
介绍:配置文件是 Spring Boot 中用于配置应用程序参数和设置的文件;
仔细来说就是将应用程序的端口号、数据库连接信息、日志配置或者重要类中的静态信息等在配置文件中进行设置;
初次看到这段介绍时可能会感觉云里雾里,脑子中可能 会蹦出很多疑问:啥玩意?不能在项目结构中单独设置吗?为什么重要信息还得再写一一遍在这个配置文件中等等;但是当你真正着手项目时,便会感叹:配门!
当将端口号或者数据库连接信息书写在配置类中时,Spring Boot 会自动加载配置文件中的参数和设置,并将其应用于应用程序中.当项目数据库发生变更时,你只需要点击配置文件,找到对应数据库配置信息进行修改,项目的数据库便会发生修改;总之,配置文件使项目变得易于维护,你不必去长长的项目中去一个一个去寻找对应变量,而是只需打开配置文件,寻找到对应项即可
配置文件种类
application.properties,application.yml,application.yaml;(yml格式与yaml格式完全一样)
在Springboot2.4.0及以后,配置文件的优先级为yaml>yml>propertise
在boot中,一个项目可能会有多个配置文件,在同一目录下若有相同内容编译器执行的优先级如上所述
yml配置文件的书写与设置
如今大多项目都使用yml文件作为配置文件,在此用例说明:
- 使用缩进来表示层级关系。YAML 文件中的数据以键值对的形式存储,每个键后面跟一个冒号,然后是该键的值。学习过python的应该会很熟悉例如:
server:
port: 8080
#在书写键的值时应为冒号+空格加值,否则会出错
-
使用空格来表示缩进,而不是使用制表符(Tab)。
-
字符串可以直接在键值对中写,不需要用引号括起来。例如:
username: root
- 布尔值可以使用
true
、false
、yes
、no
等来表示。例如:
enabled: true
- 数组可以使用中括号
[]
来表示,元素之间用逗号分隔。例如:
roles:
- admin
- user
- 列表中的元素可以是字符串、布尔值、数字等,元素之间用空格分隔。例如:
fruits:
- apple
- banana
- cherry
- 字典可以使用
{}
来表示,键值对之间用空格分隔。例如:
person:
name: John
age: 30
- 空值可以使用
null
来表示。例如:
city: null
关于spring中配置文件有关
了解到yml文件的书写规则还不够,你还应该了解如何书写配置和使用他们
在项目中,最常见的前缀可能就是spring和server了,我来说明他们的不同
server
属性:主要用于配置嵌入式服务器的行为和设置,与HTTP请求、SSL、端口等相关。spring
属性:主要用于配置Spring框架和Spring Boot应用程序的各种行为和模块,比如数据源、消息、国际化、安全等。
通过不同的前缀将配置项分类,可以使配置文件更清晰、结构更合理。例如,将与服务器相关的配置集中在server
下,将与Spring框架相关的配置集中在spring
下,便于管理和维护。当然,你也可以自定义属性名,如何使用待会说明
了解了基本概念,我们就可进行实操来熟悉他了;比如我想将项目的运行端口号修改一下或者加一些前置路径,就可以 修改配置文件
server:
port: 8088
context-path: /zhang
此时项目的启动端口号就变为了8080,并且访问路径变为了localhost:8088/zhang,运行项目进行验证
映射配置文件类
你也可以将项目中重要的变量信息放入配置类中,方便后续进行修改,下面演示一下相关操作
单个变量读取:
- 使用@Value注解将其注入
#在配置文件中设置管理员的名字
user:
name: xiao
- 使用@Value()将其注入
@RestController
public class Hello {
@Value("${user.name}")
private String name;
@RequestMapping("/hello")
public String hello(){
System.out.println(name);
return "HelloWord!";
}
}
运行即可看到控制台出现xiao
将配置文件中的值映射到类中
在项目中配置文件中的值往往使用专门的类来接收配置文件的值,下面将详细说明是如何达成的
前置知识:@ConfigurationProperties: 是 Spring Boot 中一个注解,用于将配置文件中的属性映射到一个 Java Bean 类中。
使用:
在yml文件中新建几个属性:
zhang:
name:xaioming
age:18
sex:nan
新建一个类
package com.item.demos.web;
import lombok.Data;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Data//lombok提供的注解,为Java 类自动生成常见的样板代码,如 getter、setter、toString、equals 和 hashCode 方法
@ConfigurationProperties(prefix = "zhang")
@Component//依赖注入的注解,下节会详细说明
public class Manger {
String name;
Integer age;
String sex;
}
此时yml文件中的属性就已经映射成功了;打开yml文件,ctrl+鼠标左键点击属性名,如name,若成功跳转到Manger类说明映射成功了,或者采用输出语句也可验证;
映射失败的原因可能是因为yml书写格式不规范,如为空一格就写值;也有可能是因为类中未书写set,get语句/没使用@Data,如果没有手动提供 getter
和 setter
方法,Spring 无法正确地访问和设置这些属性,导致映射失败。
作用:在更多时候是用来配置一些功能所需要的参数,如若功能需要提供微信账号与微信密码,书写在配置类中在开发的时候可以方便的修改账户密码,伴随着学习的更深入,你会逐渐理解它;
总结
看完你应当了解到什么是配置文件,配置文件的格式与作用,如何使用配置文件;掌握的配置文件映射的书写与@ConfigurationProperties注解
作用:在更多时候是用来配置一些功能所需要的参数,如若功能需要提供微信账号与微信密码,书写在配置类中在开发的时候可以方便的修改账户密码,伴随着学习的更深入,你会逐渐理解它;
总结
看完你应当了解到什么是配置文件,配置文件的格式与作用,如何使用配置文件;掌握的配置文件映射的书写与@ConfigurationProperties注解