第三节 SpringBoot项目配置及yaml文件
Spring Boot项目可以通过多种方式进行配置,包括application.properties文件、application.yml文件、命令行参数、环境变量等。这些配置可以用来设置应用程序的端口号、数据库连接信息、日志级别等。
1. Spring Boot项目配置
application.properties
配置文件是创建项目后就自带的,如果我们要自定义属性,可以在其中直接配置,配置过程如下:
在 application.properties
中添加我们要自定义的配置;
demo.id=8888
demo.name=demo
创建实体类来映射我们配置的属性;
package com.demo.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix = "demo")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class DemoProperties {
private int id;
private String name;
}
定义 Controller 来注入测试;
package com.demo.controller;
import com.demo.pojo.demoProperties;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/demo")
public class demoPropertiesController {
private static final Logger logger = LoggerFactory.getLogger(demoPropertiesController.class);
@Autowired
DemoProperties demoProperties;
@GetMapping("/profile")
public String demoProfile(){
logger.info("---------------");
logger.info(demoProperties.toString());
logger.info("---------------");
return demoProperties.toString();
}
}
2. yaml文件
yaml是一种常用的数据序列化格式,它以可读性强、简洁明了的语法著称。在Spring Boot项目中,可以使用application.yml文件来代替application.properties文件进行配置。yaml文件使用缩进来表示层次结构,支持列表和键值对两种数据结构。
实现上文代码仅需将application.properties
改为application.yml
,如下;
demo:
id:8888
demo:
name:demo
3. yml和properties的比较
一般来说,使用 IDEA 创建一个 Spring Boot 项目时,默认都会生成一个 application.properties 的配置文件。该配置文件是用来修改 Spring Boot自动配置的默认值。下面我们简单介绍两种的区别:
以mybatis的配置为例:
-
.properties 格式
server.port=8081 spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai spring.datasource.username=root spring.datasource.password=root
-
.yml 格式
server: port: 8081 spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai username: root password: root
从上面的实例我们可以发现,两者的区别主要有以下几点:
语法结构
- .properties 格式使用的是 键值对形式(key=value),而 .yml 格式则使用的是 树状结构(key: value);
- .properties 格式通过 . 来连接,用 = 来赋值,结构上比较直接,而 .yml 格式则使用 : 来分层,结构上呈现树状结构,层次感明显,而且赋值时 : 的后边必须 接着一个空格再赋值
执行先后顺序
如果一个工程中同时存在两种格式的文件,那么会 优先加载 .yml 文件,然后再加载 .properties,而且后加载的 .properties 会覆盖之前加载的 .yml 文件。
此外,.yml 配置时需要注意以下几点:
- 缩进必须用空格,不能用 Tab
- @PropertySource 注解不能加载 yml 文件