配置文件的分类
1.系统的配置文件,比如链接字符串,日志的相关设置,是系统设定好的
2.用户自定义的
配置文件的格式
1. .properties
2. .yml
SpringBoot中配置文件位于src/main/resources下
规则
1.一个项目中可以存下两种配置文件(properties 和 yml)但是不建议这么做
2.当一个项目的某个配置,出现在两种格式的配置文件中,以properties为准,忽略yml的配置
3.properties默认是不支持中文的,关闭之后再打开会乱码。
解决方法:springboot 配置文件 application.properties 中文乱码问题解决方案_钢铁的面条的博客-CSDN博客
如果properties 文件 输入时没有配置提示,则安装spring tools 插件
properties 配置文件基本语法:
key=value 例如:server.port=8081 等号左右不要写空格,后面也不要多加了空格,可能会出错
spring官方的 配置文件 文档:
读取配置文件
如果在项目中,想要主动的读取配置文件中的内容,可以使用 @Value 注解来实现。
@Value 注解使用“${}”的格式读取,如下代码所示:
读取 .properties 的配置:
package com.example.demo;
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.ResponseBody;
@Controller
public class UserController {
//将application.properties 中的 server.port 配置 赋值给 serverPort
@Value("${server.port}")
private Integer serverPort;
@ResponseBody
@RequestMapping("/sayhi")
public String sayHi() {
return "Hello World" + " port:" + serverPort;
}
}
读取 .yml 的配置
#系统配置
spring:
main:
banner-mode: off
#自定义配置
myyml:
ymlstr: ymlstring
package com.example.demo;
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.ResponseBody;
@Controller
public class UserController {
@Value("${server.port}")
private Integer serverPort;
@Value("${myyml.ymlstr}")
private String ymlstr;
@ResponseBody
@RequestMapping("/sayhi")
public String sayHi() {
return "Hello World" + " port:" + serverPort + " ymlstr:" + ymlstr;
}
}
yml和properties
properties 配置是以 key-value 的形式配置的,如下图所示:
从上述配置key看出,properties 配置文件中会有很多的冗余的信息,比如这些:
yml 是 YMAL 是缩写,它的全称 Yet Another Markup Language 翻译成中文就是“另一种标记语言”。
yml 是一个可读性高,易于理解,用来表达数据序列化的格式。它的语法和其他高级语言类似,并且可以简单表达清单(数组)、散列表,标量等数据形态,支持多种数据类型。它使用空白符号缩进和大量依赖外观的色,特别适合用来表达或编辑数据结构、各种配置文件等。
yml 最大的优势是可以跨语言,不止是 Java 中可以使用 golang、python 都可以使用 yaml 作为配置文件。
基础语法是“key: value”,注意 key 和 value 之间使用英文冒号加空格的方式组成的,其中的空格不可省略。
相比properties,yml简单很多
yml单双引号的问题:
mystring: 你好\n世界
mystring1: '你好\n世界'
mystring2: "你好\n世界"
结论:yml中字符串如果什么都不加或者加单引号 会自动对特殊字符进行转义,而双引号会原语义输出
mystring: 你好\n世界
mystring1: '你好\n世界'
#转义之后
mystring2: "你好\\n世界"
yml配置文件读对象
#对象写法一
student:
id: 1
age: 18
name: 张三
#对象写法二
student2: {id: 2,age: 20,name: 李四}
对象类:
package com.example.demo.module;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Data
//prefix 属性对应yml中对象的名字
@ConfigurationProperties(prefix = "student")
//需要在项目启动时就从配置文件中读取,需要加类注解
@Component
public class Student {
Integer id;
Integer age;
String name;
}