SpringBoot之配置⽂件
⼀、配置⽂件
SpringBoot使⽤⼀个全局的配置⽂件,配置⽂件名是固定的;
application.properties
配置⽂件的作⽤:修改SpringBoot⾃动配置的默认值;SpringBoot在底层都给我们⾃动配置好;YAML(YAML Ain’t Markup Language)
YAML A Markup Language:是⼀个标记语⾔
YAML isn’t Markup Language:不是⼀个标记语⾔;
标记语⾔:以前的配置⽂件;⼤多都使⽤的是 l⽂件;
properties是什么文件YAML:以数据为中⼼,⽐json、xml等更适合做配置⽂件;
YAML配置例⼦:
server:
port:8081
XML配置例⼦:
<server>
<port>8081</port>
</server>
⼆、YAML语法:
2.1、基本语法xml格式打开方式
k:(空格)v:表⽰⼀对键值对(空格必须有);
以空格的缩进来控制层级关系;只要是左对齐的⼀列数据,都是同⼀个层级的
server:
port:8081
path: /hello
属性和值也是⼤⼩写敏感;
2.2、值的写法
2.2.1、字⾯量:普通的值(数字,字符串,布尔)
k: v:字⾯直接来写;字符串默认不⽤加上单引号或者双引号;
“”:双引号;不会转义字符串⾥⾯的特殊字符;特殊字符会作为本⾝想表⽰的意思
name: “zhangsan \n lisi”:输出;zhangsan 换⾏ lisi
‘’:单引号;会转义特殊字符,特殊字符最终只是⼀个普通的字符串数据
name: ‘zhangsan \n lisi’:输出;zhangsan \n lisi
2.2.2、对象、Map(属性和值)(键值对):
k: v:在下⼀⾏来写对象的属性和值的关系;注意缩进
推荐⽅式
friends:
lastName: zhangsan
age:20
⾏内写法:
friends:{lastName: zhangsan,age:18}
2.2.3、数组(List、Set):
推荐⽅式:⽤- 值表⽰数组中的⼀个元素
pets:
- cat
-
dog
- pig
⾏内写法
pets:[cat,dog,pig]
三、配置⽂件值注⼊
3.1、l⽅式
配置⽂件
person:
lastName: hello
age:18
boss:false
birth: 2017/12/12
maps:{k1: v1,k2:12}
lists:
- lisi
- zhaoliu
dog:
name:⼩狗
age:12
javaBean:
/**
* 将配置⽂件中配置的每⼀个属性的值,映射到这个组件中
* @ConfigurationProperties:告诉SpringBoot将本类中的所有属性和配置⽂件中相关的配置进⾏绑定; * prefix = "person":配置⽂件中哪个下⾯的所有属性进⾏⼀⼀映射
* @Component 只有这个组件是容器中的组件,才能容器提供的@ConfigurationProperties功能;
*/
@Component
linux基本操作命令面试@ConfigurationProperties(prefix ="person")
public class Person {
private String lastName;
private Integer age;
private Boolean boss;
private Date birth;
private Map<String,Object> maps;
private List<Object> lists;
private Dog dog;
我们可以导⼊配置⽂件处理器,以后编写配置就有提⽰了
<!--导⼊配置⽂件处理器,配置⽂件进⾏绑定就会有提⽰-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
3.2、application.properties⽅式
properties配置⽂件在idea中默认utf-8可能会乱码
调整⽅式
3.3、@Value获取值和@ConfigurationProperties获取值⽐较
@ConfigurationProperties@Value 功能批量注⼊配置⽂件中的属性⼀个个指定
@ConfigurationProperties@Value 松散绑定(松散语法)⽀持不⽀持SpEL不⽀持⽀持JSR303数据校
验⽀持不⽀持
复杂类型封装⽀持不⽀持配置⽂件yml还是properties他们都能获取到值;
如果说,我们只是在某个业务逻辑中需要获取⼀下配置⽂件中的某项值,使⽤@Value;
如果说,我们专门编写了⼀个javaBean来和配置⽂件进⾏映射,我们就直接使⽤@ConfigurationProperties;
3.4、配置⽂件注⼊值数据校验
@Component
@ConfigurationProperties(prefix ="person")
@Validated
public class Person {
/**
* <bean class="Person">
* <property name="lastName" value="字⾯量/${key}从环境变量、配置⽂件中获取值/#{SpEL}"></property>
* <bean/>
*/
//lastName必须是邮箱格式
@Email
//@Value("${person.last-name}")
private String lastName;
//@Value("#{11*2}")
private Integer age;
//@Value("true")
private Boolean boss;
private Date birth;
private Map<String,Object> maps;
private List<Object> lists;
private Dog dog;
3.5、@PropertySource加载指定的配置⽂件
@PropertySource:加载指定的配置⽂件;
/**
* 将配置⽂件中配置的每⼀个属性的值,映射到这个组件中
* @ConfigurationProperties:告诉SpringBoot将本类中的所有属性和配置⽂件中相关的配置进⾏绑定;
* prefix = "person":配置⽂件中哪个下⾯的所有属性进⾏⼀⼀映射
*
* @Component 只有这个组件是容器中的组件,才能容器提供的@ConfigurationProperties功能;
* @ConfigurationProperties(prefix = "person")默认从全局配置⽂件中获取值;
*
*/
@PropertySource(value ={"classpath:person.properties"})
@Component
@ConfigurationProperties(prefix ="person")
//@Validated
public class Person {
/**
* <bean class="Person">
* <property name="lastName" value="字⾯量/${key}从环境变量、配置⽂件中获取值/#{SpEL}"></property>
* <bean/>
*/
//lastName必须是邮箱格式
// @Email
//@Value("${person.last-name}")
private String lastName;
//@Value("#{11*2}")
private Integer age;
//@Value("true")
private Boolean boss;
3.6、@ImportResource & @bean
@ImportResource:导⼊Spring的配置⽂件,让配置⽂件⾥⾯的内容⽣效;
Spring Boot⾥⾯没有Spring的配置⽂件,我们⾃⼰编写的配置⽂件,也不能⾃动识别;
想让Spring的配置⽂件⽣效,加载进来;@ImportResource标注在⼀个配置类上
@ImportResource(locations ={"l"})
导⼊Spring的配置⽂件让其⽣效
spread是什么意思不来编写Spring的配置⽂件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="/schema/beans"
xsi="/2001/XMLSchema-instance"
schemaLocation="/schema/beans /schema/beans/spring-beans.xsd">暗恋桃花源豆瓣
<bean id="helloService" class="com.atguigu.springboot.service.HelloService"></bean>
</beans>
SpringBoot推荐给容器中添加组件的⽅式:推荐使⽤全注解的⽅式
1、配置类**@Configuration**------>Spring配置⽂件
2、使⽤**@Bean**给容器中添加组件
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论