SpringBoot 学习

1. SpringBoot 概述

springBoot 提供了一种快速使用Spring的方式,基于约定优于配置的思想,可以让开发人员不必在配置与逻辑业务之间进行思维的切换,全身心的投入到逻辑业务的代码编写中,从而大大提高了开发的效率,一定程度上缩短了项目周期。

2. SpringBoot 配置

配置文件分类

SpringBoot 是基于约定的,所以很多配置都有默认值,但如果想使用自己的配置替换默认配置的话,就可以使用application.properties(application.yaml)进行配置

注意:

文件格式:

  • properties
server.port = 8080
  • yaml:
server: 
  port: 8080

YAML

YAML ( YAML Ain't Markup Language ) 是一种直观的能够被电脑识别的数据序列化格式,并且容易被人类阅读,容易和脚本语言交互的,可以被支持YAML库的不同的编程语言程序导入,比如:C/C++,Ruby,Python,Java,Perl,C#,PHP等。YAML 文件是以数据为核心的,比传统的xml更简洁,YAML 文件的扩展名可以使用 .yml 或者 .yaml

基本语法

  • 大小写敏感
  • 数据值前边必须有空格,作为分隔符
  • 使用缩进表示层级关系
  • 缩进时不允许使用Tab键,只允许使用空格(各个系统Tab对应的空格数目可能不同,导致层次混乱)
  • 缩进的空格数目不重要,只要相同的层级的元素左侧对齐即可
  • '#' 表示注释,从这个字符一直到行尾,都会被解析器忽略

数据格式

  • 对象(map): 键值对的集合
person: 
  name: zhangsan
  # 行内写法
person: {name: zhangsan}
  • 数组:一组按次序排列的值
arr: 
 - xiaomi
 - huawei
 # 行内写法
arr: [xiaomi,shanghai]
  • 纯量:单个的、不可再分的值
msg1: 'hello\n world' # 单引号忽略转义字符
msg2: "hello \n world" # 双引号识别转义字符

参数引用

name: xiaomi

person:
  name: ${name}  #引用上边定义的name

读取配置内容

@Value

示例代码:

Java文件:

/**
 * @Classname HelloworldCintroller
 * @Date 2024/3/27 20:49
 * @Created by PG_Code
 */
@RestController
public class HelloWorldController {

    @Value("${name}")
    private String name;

    @Value("${person.age}")
    private int age;

    @Value("${address[0]}")
    private String address;

    @RequestMapping("hello")
    public String hello(){
        return "姓名:"+name+" 年龄:"+age+" 住址:"+address;
    }
}

yaml 文件:

name: PG_Code

person:
  name: ${name}
  age: 18

address:
  - beijing
  - shanghai

Environment

示例代码:

@Autowired
public Environment env;

@RequestMapping("hello")
public String  hello(){
    System.out.println(env.getProperty("person.name"));
    System.out.println(env.getProperty("name"));
    return "hello";
}

ConfigurationProperties

示例代码: