1.配置文件的作用
整个项目中所有重要的数据都是在配置文件中配置的。比如:
- 数据库的连接信息(包含⽤户名和密码的设置);
- 项⽬的启动端口;
- 第三⽅系统的调⽤秘钥等信息;
- ⽤于发现和定位问题的普通⽇志和异常⽇志等。
2.配置文件的格式
Spring Boot 配置⽂件主要分为以下两种格式:
- .properties
- .yml
如下图所示:
properties 类型的配置文件是SpringBoot项目默认的文件格式。
特殊说明:
properties 可以和 yml ⼀起存在于⼀个项⽬中,.properties 配置⽂件的优先级最⾼,但加载完 .properties ⽂件之后,也会加载 .yml ⽂件的配置信息。但在实际应用中,推荐只使用一种。
3. properties配置文件说明
基本语法
properties 是以键值的形式配置的,key 和 value 之间是以"="连接的。
例如:
配置项目端口号:
# 配置项⽬端⼝号
server.port=8081
数据库连接:
#配置数据库连接信息
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/cate_db?characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=111111
自定义配置:
#自定义配置
mykey.key1=hi
配置文件中使用"#"注释
读取配置文件
在项目中,想要主动读取配置文件,可以使用注解@Value来实现。
格式:@Value(“${}”)
举例:读取自定义的配置:
配置中key1的值为hi,在类中定义一个key1,用@Value获取,在postConstruct方法打印。
@RestController
public class ValueController {
@Value("${mykey.key1}")
private String key1;
@PostConstruct
public void postConstruct(){
System.out.println("===============================");
System.out.println("key:"+key1);
}
public String hi(){
return "hi";
}
}
可以看到,结果如下:
输出了hi。
4. yml配置文件说明
yml是树形结构的配置文件。
基础语法:key: value
注意: key 和 value 之间使⽤英⽂冒汗加空格的⽅式组成的,其中的空格不可省略
yml连接数据库
使用properties 连接数据库时,总是有一大串重复的字符。如图所示。
而使用yml连接数据库,则省略了很多:
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/cate_db?characterEncoding=utf8
username: root
password: 111111
注意:一定要在冒号和value之间加空格!!!格式很重要!!!
yml配置不同数据类型及null
#boolean类型
mykey:
key1: true
#整数
int:
key2: 10
#NULL,~代表null
boo:
key3: null
key4: ~
注意事项:关于配置文件中加引号的情况:
String:
str1: Hello \n Spring Boot.
str2: 'Hello \n Spring Boot.'
str3: "Hello \n Spring Boot."
无引号ps单引号ps双引号的对比,来看看输出结果:
双引号会解析内容,比如上面的例子,把\n解析成了换行。
yml配置读取
yml 读取配置的⽅式和 properties 相同,使⽤ @Value 注解即可。
@Value("${spring.datasource.username}")
private String sqlusername;
@PostConstruct
public void postConstruct(){
System.out.println("===============================");
System.out.println("key:"+key1);
System.out.println("sqlusername"+sqlusername);
}
结果如下图所示:
使用yml配置对象
定义一个学生对象:
student:
id: 1
name: 温温
age: 18
创建一个对应的学生类:
@Data
@Component
@ConfigurationProperties(prefix = "student")
public class Student {
private Integer id;
private String name;
private Integer age;
}
补充:
注解1:使用@Data注解可以帮助我们直接写get, set, toString等方法,就不用手动写了,但是使用此注解需要引入lombok依赖。
注解2:@Component,将这个对象交给Spring管理。
注解3:@ConfigurationProperties,进行赋值,如果去掉这个注解,则student类的属性值都为空。
进行配置读取:
@Autowired
private Student student;
@PostConstruct
public void postConstruct(){
System.out.println("===============================");
System.out.println(student);
System.out.println("===============================");
}
结果如下:
使用yml配置集合
在上面代码的基础上配置一个集合dbtypes,使用"-"。配置文件如下:
student:
id: 1
name: 温温
age: 18
dbtypes:
- mysql
- java
- web
student类如下:
@Data
@Component
@ConfigurationProperties(prefix = "student")
public class Student {
private Integer id;
private String name;
private Integer age;
private List<String> dbtypes;
}
输出结果如下:
直接在配置文件和类中添加属性即可。
使用yml配置map
配置文件如下:
student:
id: 1
name: 温温
age: 18
dbtypes:
- mysql
- java
- web
map:
k1: kk1
k2: kk2
k3: kk3
student类如下:
@Data
@Component
@ConfigurationProperties(prefix = "student")
public class Student {
private Integer id;
private String name;
private Integer age;
private List<String> dbtypes;
private Map<String,String> map;
}
结果如下: