高端网站建设南京,备案 网站首页地址,wordpress文章排序错误,如何安装wordpress的插件目录
什么是配置文件#xff1f;
配置文件的作用
SpringBoot配置文件
配置文件格式
配置文件的优先级
properties配置文件说明
properties基本语法
读取配置文件
properties缺点
yml配置文件说明
yml基本语法
使用yml连接数据库
yml配置不同数据类型及null 注意…
目录
什么是配置文件
配置文件的作用
SpringBoot配置文件
配置文件格式
配置文件的优先级
properties配置文件说明
properties基本语法
读取配置文件
properties缺点
yml配置文件说明
yml基本语法
使用yml连接数据库
yml配置不同数据类型及null 注意事项
PostConstruct
配置对象
配置集合
配置Map
yml配置文件的优缺点
优点
缺点
总结 什么是配置文件
配置文件是一种存放应用程序或系统配置的文件包含了程序运行时所需要的各种选项和配置信息例如字体样式、默认语言等。它允许开发者和用户在不修改代码的情况下调整应用程序的行为和性能。配置文件通常以文本形式存在格式可以是XML、JSON、YAMLyml、INI、Properties等。
配置文件的作用
配置文件主要是为了解决硬编码代码的问题把可能会发生改变的信息放在一个集中的地方当我们启动某个程序时应用程序从配置文件中读取数据并加载运行。
使用配置文件可以使程序完成用户和应用程序的交互或者应用程序与其他应用程序的交互。 硬编码指的是将数据直接嵌入到程序或者其他可执行对象的源代码中也就是我们常说的将“代码写死”。 SpringBoot配置文件
SpringBoot支持并定义了配置文件的格式也是在另一个层面达到了规范其他框架集成到SpringBoot的目的。
很多项目或者框架的配置信息也放在配置文件中如 项目的启动端口号数据库的连接信息包含用户名和密码的设置第三方系统的调用密钥等信息用于发现和定位问题的普通日志和异常日志等 在SpringBoot中内置了Tomcat服务器默认端口号是8080,但在用户电脑上8080端口号可能会被其他应用程序占用此外如果启动多个SpringBoot项目那么端口号也需要不同所以SpringBoot需要支持让用户自定义端口号。
配置文件格式
在SpringBoot中有三种不同形式的配置文件 application.propertiesapplication.ymlapplication.yaml yml是yaml的缩写实际开发中出现的频率最高。yaml和yml使用方式是一样的都是键值对的形式所以后面我们只讲yml。 当应⽤程序启动时SpringBoot会⾃动从classpath路径找到并加载 application.properties 和 application.yaml 或者 application.yml ⽂件当然也可以使用 spring.config.name 指定文件路径和名称。
配置文件的优先级 理论上application.properties 和 application.yml 是可以同时存在同一个项目中的当这两个配置文件都存在两个配置都会加载。如果配置文件内容有冲突以application.properties 为主即 application.properties 的优先级更高。虽然在理论上两个配置文件可以共存但在实际的业务中我们都是采用一种统一的配置文件这样可以更好的维护降低故障率。 properties配置文件说明
properties配置文件是最早期的配置文件格式也就是创建SpringBoot项目默认的配置文件。
properties基本语法 properties是以键值对的形式配置的key和value之间用“”来连接。 示例
#配置项目端口号
server.port9090
#配置数据库连接信息
spring.datasource.urljdbc:mysql://localhost:3306/beantext?characterEncodingutf-8useSSLfalse
#配置数据库用户名
spring.datasource.usernameroot
#配置数据库密码
spring.datasource.passwordroot
#配置数据库驱动
spring.datasource.driver-class-namecom.mysql.cj.jdbc.Driver 配置文件中使用 # 来添加注释信息。 读取配置文件
在项目中如果我们想要读取到配置文件中的内容需要使用 Value 注解并且在注解中使用“${}”的格式来读取。
my.texthello world
package com.example.demo.controller;import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;RequestMapping(/pro)
RestController
public class PropertiesController {Value(${my.text})private String key;RequestMapping(/text1)public String getValue() {return 获取到的value为 key;}
}properties缺点
properties配置是以键值对的形式配置的我们通过观察可以看到里面有些代码比较冗余。 此外properties配置格式对中文也是不友好我们把value值换为中文再来试一下
my.text你好 世界 为什么会这样我们可以打断点看一下 可以看到key的值是四个问号。 但是idea默认的字符集是UTF-8是支持中文的为了防止这种情况发生所以我们在properties配置文件中尽量不要出现中文。
接下来我们来讲一下yml配置文件。
yml配置文件说明
yml是yaml的缩写全程是 Yet Another Markup Language 翻译过来就是“另一种标记语言”。
yml基本语法 yml是树形结构的配置文件基本语法是key: value注意冒号后面是有空格的,不能省略 key后冒号空格 我们可以看到正确的写法的key是会有高亮提示的橙色当然应该可以设置成其他颜色而对于错误的写法key还是灰色。 此外只要冒号有空格隔开就是正确的写法至于空格的数量是不限的当然按照规范来写的话最好就一个。 使用yml连接数据库
spring: datasource:url: jdbc:mysql://localhost:3306/beantext?characterEncodingutf-8useSSLfalseusername: rootpassword: rootdriver-class-name: com.mysql.cj.jdbc.Driver
可以看到相对properties配置文件的写法yml配置文件的写法不仅能够体现出层级关系还能节省不必要的代码。
此外yml还有其他操作。
yml配置不同数据类型及null
# 字符串
string.value: hello# 布尔类型
boolean.value: true
boolean.value1: false# 整数类型
int.value: 10# 浮点数
float.value: 3.14159# Null ~ 代表null
null.value: ~# 空字符串
# 单引号也表示空字符串
# 冒号后面什么都不加也可以表示空字符串。但这种方式不直观更多的表示是使用引号括起来
empty:value1: value2: value3:那么yml配置文件的属性应该如何获取
其实跟properties配置文件获取属性的操作一样都是要使用 Value 注解来进行获取的。
package com.example.demo.controller;import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;RequestMapping(/pro)
RestController
public class PropertiesController {Value(${string.value})private String value;Value(${boolean.value})private Boolean value1;Value(${boolean.value1})private Boolean value2;Value(${int.value})private Integer value3;Value(${float.value})private Float value4;Value(${null.value})private String value5;RequestMapping(/getValue)public String getValue() {return 获取到的value为 value | value1 | value2 | value3 | value4 | value5;}
}注意事项 字符串默认不用加上单引号或者双引号如果加英文的双引号可以表示特殊的含义而如果加英文的单引号则不会表示特殊的含义。 我们来看个例子来理解这段话的意思
string:value1: Hello \n SpringBootvalue2: Hello \n SpringBootvalue3: Hello \n SpringBoot
package com.example.demo.controller;import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;RequestMapping(/pro)
RestController
public class PropertiesController {Value(${string.value1})private String value1;Value(${string.value2})private String value2;Value(${string.value3})private String value3;RequestMapping(/getValue)public String getValue() {System.out.println(value1);System.out.println(value2);System.out.println(value3);return OK;}
} 可以看到不加引号的和加单引号的不会让“\n”进行换行而加双引号的依旧会让\n进行换行操作。 我们可以得出结论 字符串默认不用加上单引号或双引号单引号会转义特殊字符使其失去特殊功能始终是一个普通的字符串双引号不会转义字符串里面的特殊字符特殊字符会表示本身的含义。 可能会有点绕\n本义是换行 使用单引号会转义就是说不再换行了\n只是一个普通的字符串 使用双引号不会转义就是说\n依旧是它本身的含义即换行。 这里我们来了解一个新的注解PostConstruct
PostConstruct PostConstruct可以标注在方法上被标注的方法会在Spring容器完成Bean的实例化和依赖注入之后自动执行。所以我们这里可以偷个懒后面的讲解我们就使用这个注解来帮我们完成测试。 需要注意 用该注解修饰的方法必须是非静态方法不能有参数返回类型通常是void。 配置对象
yml配置文件不仅能配置一些基本的数据类型还能配置对象。
写法如下
#配置对象
student:name: 张三age: 18
也可以写成行的形式
#行的形式
student1: {name: 张三, age: 18}
那么这个时候我们就不能使用 Value 注解来获取配置中的对象了需要使用另外一个注解ConfigurationProperties 来读取如下
package com.example.demo.model;import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;Data
Component
ConfigurationProperties(prefix student)//prefix表示前缀
public class Student {private String name;private int age;
}Controller
public class PropertiesController {Autowiredprivate Student student;PostConstructpublic void getStudent() {System.out.println(student);}
} 配置集合
ymp还可以配置集合。 配置格式 在-后一定要加空格否则-和后面的内容就成了整体统一赋值给对应的属性 type:list:- zhangsan- lisi- wangwu package com.example.demo.model;import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;import java.util.List;Data
Component
ConfigurationProperties(type)
public class ListConfig {private ListString list;}
Controller
public class PropertiesController {Autowiredprivate ListConfig listConfig;PostConstructpublic void getList() {System.out.println(listConfig.toString());}
} 配置Map package com.example.demo.model;import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;import java.util.Map;Data
Component
ConfigurationProperties(maptypes)
public class MapConfig {private MapString, String map;
}
package com.example.demo.controller;import com.example.demo.model.ListConfig;
import com.example.demo.model.MapConfig;
import com.example.demo.model.Student;
import jakarta.annotation.PostConstruct;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;Controller
public class PropertiesController {Autowiredprivate MapConfig mapConfig;PostConstructpublic void getMap() {System.out.println(mapConfig);}
} yml配置文件的优缺点
优点 可读性⾼写法简单, 易于理解采用缩进和嵌套来表示层次结构适合非常复杂配置的管理⽀持更多的数据类型, 可以简单表达对象, 数组, ListMap等数据形态.⽀持更多的编程语⾔, 不⽌是Java中可以使⽤, 在Golang, Python, Ruby, JavaScript中也可以使⽤ 缺点 不适合写复杂的配置⽂件对格式有较强的要求(⼀个空格可能会引起⼀场⾎案)对缩进敏感 总结
什么是配置文件 配置文件是用来存放应用程序或者系统的配置的文件可以在不动源码的情况下对应用程序的性能和行为进行调整使用配置文件可以使程序完成用户和应用程序的交互或者应用程序与其他应用程序的交互。 SpringBoot的配置文件 Spring有三种配置文件 application.propertiesapplication.ymlapplication.yaml application.properties 和 application.yml 是可以同时存在同一个项目中的以application.properties为主.properties的优先级更高。 配置文件的格式 application.properties键值对形式key和value用“”隔开application.yml也是键值对key和value用“冒号空格”隔开。 读取配置文件的方式 对于基本的数据类型我们采用 Value 注解即可但对于对象、集合、map这些我们需要使用 ConfigurationProperties 。 PostConstruct可以标注在方法上被标注的方法会在Spring容器完成Bean的实例化和依赖注入之后自动执行。要求是方法不能是静态方法不能有参数返回值尽量为void。 以上就是本篇所有内容~
若有不足欢迎指正~