yml语法01

yml语法

引号的区别

双引号

不会转义字符串里面的特殊字符,特殊字符会作为本身想表达的意思

name:  name: "zhangsan \n lisi"   
输出:zhangsan 换行 lisi

单引号

会转义字符,特殊字符最终会以普通字符输出

name: 'zhangsan \n lisi'    
输出:zhangsan \n lisi

对象和Map

friends:
	name: zhangsan
	age: 20
或者:
friends: {name: zhangsan,age: 20}

数组(List、Set)

用- 来表示每一个元素

pets:
	- cat
	- dog
	- pig
或者:
pets: [cat,dog,pig]

搭配使用的注解

  • (写在类上)@ConfigurationProperties(profix: “person”)

告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定

profix: “person”

指定前缀(配置文件中的哪个属性下面的所有属性进行一一映射)

  • (写在属性上)@Value("${person.name}")

    ${}从字面量、配置文件中获取值

    #{}SpringEL(表达式)

  • @ConfigurationProperties 和 @Value获取值的比较

@ConfigurationProperties @Value
功能 批量注入配置文件中的值 只能一个个注入
松散绑定(松散语法) 支出 不支持
SpEL(Spring表达式) 不支持 支持
JSR303数据校验 支持 不支持
复杂类型封装 支持 不支持

两个注解都能获取到配置文件中的值;

如果说只是在某个业务中需要获取一下配置文件中的某项值,就用@Value

如果编写了一个JavaBean来和配置文件进行映射,就用@ConfigurationProperties

添加依赖

<!--导入配置文件处理器,导入此依赖后在配置文件中给属性绑定值时会有提示-->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-configuration-processor</artifactId>
</dependency>

加载指定的配置文件

把配置文件拆分成多个,花括号中的值可以有多个

@PropertySource(value = {“classpath:person.properties”})

给容器中添加组件

@Configuration//指明当前类是一个配置类
public class MyAppConfig {

    @Bean//
    public HelloController helloSerbice(){
        return new HelloController();
    }
    
}

文档块

文档块相当于多个文件

spring
	profiles
		active: dev
server
	port: 8080
---
spring
	profiles: dev
server
	port: 8081
---
spring
	profiles: test
server
	port: 8082

激活配置文件

  • 在配置文件中指定
spring.profiles.active=dev
  • 命令行参数

Java -jar 包名 --spring.profiles.active=dev

  • 虚拟机参数

-Dspring.profiles.active=dev

上一篇:SQL Server 数据库单用户模式处理


下一篇:微信公众号教程(17)问答系统