ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

SpringBoot系列(二)配置文件

2021-12-09 22:35:20  阅读:127  来源: 互联网

标签:系列 SpringBoot 配置文件 application spring person zhangsan name


1、配置文件

SpringBoot使用一个全局的配置文件,配置文件名是固定的;
•application.properties
•application.yml

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

之前玩MVC时候的配置文件多半是 xxx.xml的配置文件。

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

<server>
<port>8080</port>
</server>
server:
	port: 8080

2、YAML语法

1、基本语法

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

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

pool:
	config:
		coresize: 100
		maxsize: 200

属性和值也是大小写敏感

2、值的写法

字面量:普通的值(数字,字符串,布尔)
字符串默认不用加上单引号或者双引号
“”:双引号;不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思

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

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

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

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

person:
	name: zhangsan
	sex: nan
	age: 18

行内写法是这样的

person: {name: zhangsan,sex: nan,age: 18}

数组(List、Set):

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

list: 
	- zhangsan
	- lisi
	- wangwu

行内写法:

list: [zhangsan,lisi,wangwu]

3、配置文件值注入

@Data
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
	private String name;
	private Integer age;
	private String sex;
	private List<String> friends;
	private Pet pet;
}

如果爆出配置红色的:添加这个以来就好了

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
</dependency>

乱码问题
在这里插入图片描述
解决方案如图所示.

**@Value获取值和@ConfigurationProperties获取值比较
**
先说一下@Value:
这是一个个指定的,比较麻烦,且不支持松散绑定
这里提一下松散绑定

驼峰式、下划线(_)、短横线(-)

标准方式 
person.firstName

方式一 
大写用- 
person.first-name

方式二 
大写用_ 
person.first_name

但是他是支持spel表达式的,但是这个表达式对字符串而言作用不会太大例如:

value="#{'北京'}"

没啥用属于是
他也不支持JSR303数据校验
说一下JSR303
在这里插入图片描述
也不支持复杂类型封装

再说一下ConfigurationProperties
他是批量注入配置文件中的属性 ,就像刚刚那个案例一样
它不支持Spel但是它支持松散绑定,JSR303数据校验,支持复杂类型封装

总结

如果说,我们只是在某个业务逻辑中需要获取一下配置文件中的某项值,使用@Value;
如果说,我们专门编写了一个javaBean来和配置文件进行映射,我们就直接使用@ConfigurationProperties;

4、@PropertySource&@ImportResource&@Bean

@PropertySource:加载指定的配置文件;
@ImportResource:导入Spring的配置文件,让配置文件里面的内容生效; SpringBoot更应该用注解配置

1、配置类@Configuration------>Spring配置文件
2、使用@Bean给容器中添加组件

5、配置文件占位符

占位符获取之前配置的值,如果没有可以是用:指定默认值

person.name=${person.name:xiaoming}

6、Profile

1、多Profile文件
我们在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml
默认使用application.properties的配置;

2、yml支持多文档块方式

spring:
 profiles: prod 

3、激活指定profile
命令行:

java -jar spring-boot-demo02.jar --spring.profiles.active=dev;

可以直接在测试的时候,配置
传入命令行参数

7、配置文件加载位置

事实上,配置文件加载是有优先级的,相同的会被覆盖,不同的会互补。

springboot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件
–file:./config/
–file:./
–classpath:/config/
–classpath:/
优先级由高到底,高优先级的配置会覆盖低优先级的配置;

我们还可以通过spring.config.location来改变默认的配置文件位置

项目打包好以后,我们可以使用命令行参数的形式,启动项目的时候来指定配置文件的新位置;指定配置文件和默
认加载的这些配置文件共同起作用形成互补配置;

java -jar spring-boot-demo02.jar --spring.config.location=E:/application.properties

8、结束语

姑且到此为止,这一小节中我们知道了SPRINGBOOT的配置文件的写法属性包括配置文件的位置和加载顺序。

1、寄语

Springboot的东西还是很多的,但是核心就那么几个,只要慢慢去看,去学习,一定能够掌握。掌握了Springboot。干活就不难了!

标签:系列,SpringBoot,配置文件,application,spring,person,zhangsan,name
来源: https://blog.csdn.net/weixin_45487988/article/details/121796742

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有