【SpringBoot】SpringBoot 配置这一篇文章就够了

SpringBoot 配置文件 一、配置文件

SpringBoot使用一个全局的配置文件,配置文件名是固定的;

application.properties

application.yml

配置文件的作用:修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好;

YAML(YAML Ain't Markup Language)

YAML A Markup Language:是一个标记语言

YAML isn't Markup Language:不是一个标记语言;

标记语言:

以前的配置文件;大多都使用的是 xxxx.xml文件;

YAML:以数据为中心,比json、xml等更适合做配置文件;

YAML:配置例子

server: port: 8081

xml:

<server> <port>8081</port> </server> 二、YAML语法 1、基本语法

k:(空格)v:表示一对键值对(空格必须有);

空格的缩进来控制层级关系;只要是左对齐的一列数据,都是同一个层级的

server: port: 8081 path: /hello

属性和值也是大小写敏感;

2、值的写法 2.1 字面量:普通的值(数字,字符串,布尔)

k: v:字面直接来写;

字符串默认不用加上单引号或者双引号;

"":双引号;不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思

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

'':单引号;会转义特殊字符,特殊字符最终只是一个普通的字符串数据

name: ‘zhangsan \n lisi’:输出;zhangsan \n lisi

2.2 对象、Map(属性和值)(键值对):

k: v:在下一行来写对象的属性和值的关系;注意缩进

对象还是k: v的方式

friends: lastName: sang age: 18

行内写法

friends: {lastName: sang,age: 18} 2.3 数组(List Set)

用- 值表示数组中的一个元素

pets: - cat - dog - pig

行内写法

pets: [cat,dog,pig] 三、@ConfigurationProperties配置文件值注入 1.pom.xml中添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <version>2.3.0.RELEASE</version> <optional>true</optional> </dependency>

书写配置文件的时候会提示

2.配置文件 person: lastName: sang age: 18 boss: false maps: {k1: v1,k2: v2} lists: - li - san dog: name: wang age: 12

如果使用properties文件中文乱码的话需要修改文件的编码

3.JavaBean: package com.slp.springboot02config.bean; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; import java.util.List; import java.util.Map; /** * @ClassName Person * @Description 将配置文件中配置的每一个属性的值,映射到这个组件中 * ConfigurationProperties:告诉SpringBoot将本类中的所有属性和配置文件中的相关的配置进行绑定; * prefis = "person":配置文件中哪个下面的所有属性一一映射 * * 只有这个组价是容器中的组件,才能使用容器提供的@ConfigurationProperties功能 * @Author sanglp * @Date 2020/5/22 17:42 * @Version 1.0 **/ @Component @ConfigurationProperties(prefix = "person") public class Person { private String lastName; private int age; private Boolean boss; private List<Object> lists; private Map<String,Object> maps; private Dog dog; public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Boolean getBoss() { return boss; } public void setBoss(Boolean boss) { this.boss = boss; } public List<Object> getLists() { return lists; } public void setLists(List<Object> lists) { this.lists = lists; } public Map<String, Object> getMaps() { return maps; } public void setMaps(Map<String, Object> maps) { this.maps = maps; } public Dog getDog() { return dog; } public void setDog(Dog dog) { this.dog = dog; } @Override public String toString() { return "Person{" + "lastName='" + lastName + '\'' + ", age=" + age + ", boss=" + boss + ", lists=" + lists + ", maps=" + maps + ", dog=" + dog + '}'; } } package com.slp.springboot02config.bean; /** * @ClassName Dog * @Description TODO * @Author zixin * @Date 2020/5/22 17:44 * @Version 1.0 **/ public class Dog { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } } package com.slp.springboot02config; import com.slp.springboot02config.bean.Person; import org.junit.jupiter.api.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; /** * 可以在测试期间自动注入 * RunWith 指定使用Spring处理器而不是junit */ @RunWith(SpringRunner.class) @SpringBootTest class SpringBoot02ConfigApplicationTests { @Autowired Person person; @Test void contextLoads() { System.out.println(person); } } 4.结果: Person{lastName='sang', age=18, boss=false, lists=[li, san], maps={k1=v1, k2=v2}, dog=com.slp.springboot02config.bean.Dog@6fa69af7} 四、@Value获取值

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyypjj.html