SpringBoot配置⽂件详解
⽂章⽬录
1、配置⽂件shirly什么意思中文人名
SpringBoot使⽤⼀个全局的配置⽂件,配置⽂件名是固定的;
·application.properties
·l
配置⽂件的作⽤:修改SpringBoot⾃动配置的默认值;SpringBoot在底层都给我们⾃动配置好;YAML(YAML Ain’t Markup Language)
YAML A Markup Language:是⼀个标记语⾔
YAML isn’t Markup Language:不是⼀个标记语⾔;
标记语⾔:
js代码在哪里运行以前的配置⽂件;⼤多都使⽤的是 l⽂件;
YAML:以数据为中⼼,⽐json、xml等更适合做配置⽂件;
YAML:配置例⼦
server:
port:8081
XML:
<server>
<port>8081</port>
</server>
2、YAML语法:
1、基本语法
k:(空格)v:表⽰⼀对键值对(空格必须有);
以空格的缩进来控制层级关系;只要是左对齐的⼀列数据,都是同⼀个层级的
server:
port:8081
path: /hello
属性和值也是⼤⼩写敏感;
2、值的写法
字⾯量:普通的值(数字,字符串,布尔)
k: v:字⾯直接来写;
字符串默认不⽤加上单引号或者双引号;
“”:双引号;不会转义字符串⾥⾯的特殊字符;特殊字符会作为本⾝想表⽰的意思name: “zhangsan \n lisi”:输出;zhangsan 换⾏ lisi
‘’:单引号;会转义特殊字符,特殊字符最终只是⼀个普通的字符串数据name: ‘zhangsan \n lisi’:输出;zhangsan \n lisi
对象、Map(属性和值)(键值对):
k: v:在下⼀⾏来写对象的属性和值的关系;注意缩进
原码怎么转换补码
对象还是k: v的⽅式
friends:
lastName: zhangsan
age:20
⾏内写法:
friends:{lastName: zhangsan,age:18}
数组(List、Set):
⽤- 值表⽰数组中的⼀个元素
pets:
- cat
- dog
- pig
⾏内写法
pets:[cat,dog,pig]
3、配置⽂件值注⼊
配置⽂件
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":配置⽂件中哪个下⾯的所有属性进⾏⼀⼀映射
*
* 只有这个组件是容器中的组件,才能容器提供的@ConfigurationProperties功能;
*
*/
@Component
@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>
1、properties配置⽂件在idea中默认utf-8可能会乱码
2、@Value获取值和@ConfigurationProperties获取值⽐较
java判断数组中是否包含某个元素@ConfigurationProperties@Value 功能批量注⼊配置⽂件中的属性⼀个个指定松散绑定(松散语法)⽀持不⽀持SpEL不⽀持⽀持JSR303数据校验⽀持不⽀持
复杂类型封装⽀持不⽀持配置⽂件yml还是properties他们都能获取到值;
如果说,我们只是在某个业务逻辑中需要获取⼀下配置⽂件中的某项值,使⽤@Value;
如果说,我们专门编写了⼀个javaBean来和配置⽂件进⾏映射,我们就直接使⽤@ConfigurationProperties;
3、配置⽂件注⼊值数据校验
@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;
4、@PropertySource&@ImportResource&@Bean
@PropertySource:加载指定的配置⽂件;
/
**
* 将配置⽂件中配置的每⼀个属性的值,映射到这个组件中
* @ConfigurationProperties:告诉SpringBoot将本类中的所有属性和配置⽂件中相关的配置进⾏绑定;
*      prefix = "person":配置⽂件中哪个下⾯的所有属性进⾏⼀⼀映射
*
* 只有这个组件是容器中的组件,才能容器提供的@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;
@ImportResource:导⼊Spring的配置⽂件,让配置⽂件⾥⾯的内容⽣效;
Spring Boot⾥⾯没有Spring的配置⽂件,我们⾃⼰编写的配置⽂件,也不能⾃动识别;
想让Spring的配置⽂件⽣效,加载进来;@ImportResource标注在⼀个配置类上
@ImportResource(locations ={"l"})
导⼊Spring的配置⽂件让其⽣效
不来编写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**给容器中添加组件
/**
* @Configuration:指明当前类是⼀个配置类;就是来替代之前的Spring配置⽂件
*
* 在配置⽂件中⽤<bean><bean/>标签添加组件
*
*/
@Configuration
public class MyAppConfig {
//将⽅法的返回值添加到容器中;容器中这个组件默认的id就是⽅法名
properties是什么文件isalnum 函数是什么意思@Bean
public HelloService helloService02(){
System.out.println("配置类@Bean给容器中添加组件了...");
return new HelloService();
}
}
4、配置⽂件占位符
1、随机数
${random.value}、${random.int}、${random.long}
${random.int(10)}、${random.int[1024,65536]}
2、占位符获取之前配置的值,如果没有可以是⽤:指定默认值
person.last-name=张三${random.uuid}
person.age=${random.int}
person.birth=2017/12/15
person.boss=false
person.maps.k1=v1
person.maps.k2=14
person.lists=a,b,c
person.dog.name=${person.hello:hello}_dog
person.dog.age=15
5、Profile
1、多Profile⽂件
我们在主配置⽂件编写的时候,⽂件名可以是 application-{profile}.properties/yml
默认使⽤application.properties的配置;
2、yml⽀持多⽂档块⽅式

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。