SpringBoot零基础详解⼆:配置⽂件application及⾃动配置原
理
Table of Contents
⼆:配置⽂件
1:application配置⽂件
1.1 :SpringBoot使⽤⼀个全局的配置⽂件,配置⽂件名是固定的;
·application.properties
·l
1.2:配置⽂件的作⽤:修改SpringBoot⾃动配置的默认值(SpringBoot在底层都给我们⾃动配置好的默认值);YAML(YAML Ain't Markup Language) yaml是⼀个标记语⾔
1.3:标记语⾔⽐较 YMAL和XML:
以前的配置⽂件;⼤多都使⽤的是 l⽂件;
YAML:以数据为中⼼,⽐json、xml等更适合做配置⽂件
yml配置例⼦:
server:
port: 8091
properties配置例⼦:
server.port=8090
xml配置例⼦:
<server>
<port>8081</port>
</server>
1.4:同级别配置项,properties配置级别⾼
2:YMAL语法
linux系统有啥用2.1:基本语法:
k:(空格)v ---- 表⽰⼀对键值对(空格必须有);
以空格的缩进来控制层级关系;只要是左对齐的⼀列数据,都是同⼀个层级的
server:
port: 8081
path: /hello
属性和值的⼤⼩写都很敏感;
2.2:字⾯量:普通的值(数字,字符串,布尔)
k: v ----字⾯直接来写;
注:冒号后有空格
字符串默认不⽤加上单引号或者双引号;
"":双引号;不会转义(改变)字符串⾥⾯的特殊字符含义;特殊字符会作为本⾝想表⽰的意思name: "zhangsan \n lisi":输出;zhangsan 换⾏ lisi
'':单引号;会转义(改变)特殊字符含义,特殊字符最终只是⼀个普通的字符串数据
name: ‘zhangsan \n lisi’:输出;zhangsan \n lisi
2.3:对象、Map(属性和值)(键值对):
k: v:在下⼀⾏来写对象的属性和值的关系;注意缩进
对象还是k: v的⽅式
friends:
lastName: zhangsan
age: 20
⾏内写法:
friends: {lastName: zhangsan,age: 18}
2.4:数组(List、Set):
⽤- 值表⽰数组中的⼀个元素
pets:
- cat
- dogsimulink数据导出到matlab
- pig
⾏内写法:
pets: [cat,dog,pig]
3:配置⽂件注⼊程序内;程序使⽤配置⽂件内容pycharm使用教程 linux
注:javabean必须有属性的get和set⽅法
3.1:YMAL配置⽂件:
person:
lastName: zhansan
age: 22
map: {k1: v1,k2: v2}
list:
- wangwu
- zhaoliu
dog:
name: 馒头
age: 2
javaBean:
/**
* 将配置⽂件中的值映射到这个组件上
* @ConfigurationProperties:告诉SpringBoot将本类中的所有属性和配置⽂件中相关的配置进⾏绑定; * prefix = "person":配置⽂件中哪个下⾯的所有属性进⾏⼀⼀映射
*
stackables* 只有这个组件是容器中的组件,才能容器提供的@ConfigurationProperties功能;
*
*/
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
private String lastName;
js中的indexof的用法private Integer age;
private Map<String,Object> map;
private List<String> list;
private Dog dog;
我们可以导⼊配置⽂件处理器,以后编写配置就有提⽰了
<!--导⼊配置⽂件处理器,配置⽂件进⾏绑定就会有提⽰-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
3.2:properties配置⽂件;
#perperties配置person
person.last-name=李四
person.age=33
person.map.k1=v2
person.map.k2=v1
properties是什么文件person.list=1,2,3
person.dog.name=⼟⾖
person.dog.age=3
如果出现乱码就是idea默认*.properties的编码格式为gbk,在设置中改成utf-8即可
3.3:@Value获取值和@ConfigurationProperties获取值⽐较
@value()
@ConfigurationProperties
@Value 功能
批量注⼊配置⽂件中的属性⼀个个指定属性松散绑定
⽀持不⽀持SPEL(计算式)
不⽀持⽀持JSR303数据校验
⽀持不⽀持复杂类型⽀持
不⽀持
区别:
如果说,我们只是在某个业务逻辑中需要获取⼀下配置⽂件中的某项值,使⽤@Value;可以在任何类变量上取到;如果说,我们专门编写了⼀个javaBean来和配置⽂件进⾏映射,我们就直接使⽤@ConfigurationProperties;注:
1:松散绑定
2:SPEL(计算式)
可以⽀持这样的:@Value("#{2*11}")
3:JSR303校验:
@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;
4:复杂类型:
@value不⽀持map,对象等复杂类型;
3.4:@PropertySource&@ImportResource&@Bean
1:@PropertySource:加载指定的配置⽂件---分离properties;使默认的properties不再臃肿;注:该⽅法只能⽤于properties配置⽂件,@Value和@ConfigurationProperties都适⽤;
2:@ImportResource:导⼊Spring的配置⽂件,让配置⽂件⾥⾯的内容⽣效;
以前我们想注册⼀个service配置⽂件;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论