目录
1 配置文件种类
2 application.properties讲解
2.1 修改内嵌容器端口号和访问路径
2.2 自定义属性配置
2.3 配置变量引用
2.4 随机值配置
2.4.1 配置随机值
2.4.2配置随机端口
2.5 @@
3 yml 配置文件
3.1 yml 配置文件与 properties 文件的区别
3.2 yml 配置文件的语法
3.2.1 分隔符号不同
3.2.2 yml赋值
3.2.3 尽量不用TAB而是Enter
3.2.4 冒号后加空格
4 Spring中EL表达式讲解
4.1 EL表达式简介
4.2 表达式操作符
4.3 EL表达式示例
Springboot有两种配置文件,一种是application.properties,一种是application.yml,两种配置文件,如果同时存在的话,那么application.properties的优先级要高于application.yml
# 修改访问端口
server.port=8888
# 修改默认的访问路径 / 为 /helloboot
server.context-path=/helloboot
配置文件中是msg=Hello World
那么在类里面,按照下面写直接注入
@Value("${msg}")
private String msg;
配置文件中是
hello=bjsxt
msg=Hello World ${hello}
在类中直接使用
@Value("${msg}")
private String msg;
在配置文件中:
num=${random.int}
msg=Hello World ${num}
在类中直接使用:
@Value("${msg}")
private String msg;
用处: 配置随机值, 在程序中如果有一些运算需要一个随机值, 那么可以使用该方式来生成。 注意, 只生成一次。
server.port=${random.int[1024,9999]}
用处: 在 SpringCloud 的微服务中, 我们是不需要记录 IP 与端口号的。 那么我们也就不需要去维护服务的端口号。 让他随机生成就可以了。
${}和@@都是springboot引用属性变量的方式,具体区别与用法:
语法为:field_name=@field_value@
示例:在实际项目开发中,为了在不同环境进行测试,我们会在src/main/resources目录下创建config文件夹,并在config中创建多个properties文件,例如:local.properties, development.properties, production.properties,
当我们在src/main/resources/application.properties文件中引用src/main/resources/config/local.properties的属性变量时,就要使用@@方式
yml 配置文件是 SpringBoot 中新增的一种配置文件格式。 特点: 具备天然的树状结构
配置文件的扩展名有变化
配置文件中的语法有变化
在 properties 文件中是以“.” 进行分割, 在 yml 中使用“: ”进行分割
yml 的数据格式和 json 的格式很像, 都是 K-V 结构的。 并且是通过“: ” 赋值
在 yml 中缩进一定不能使用 TAB 件, 否则会报错。
每个 K 的冒号后面一定要加一个空格,否则不能识别,因此,一定要在冒号后加空格
详细的.properties和.yml文件比较链接
spring EL-Spring 表达式语言,支持在xml和注解中使用表达式,类似于JSP的EL表达式语言
了解jsp中的EL表达式
Spring 开发中经常涉及调用各种资源的情况,包括普通文件、网址、配置文件、系统环境变量等,我们可以使用Spring的表达式语言实现资源的注入
SpringEL从名字来看就能看出,和EL是有点关系的,SpringEL的使用和EL表达式的使用非常相似,EL表达式在JSP页面更方便的获取后台中的值,而SpringEL就是为了更方便获取Spring容器中的Bean的值,EL使用${},$是去找外部配置的参数,将值赋过来,而SpringEL使用#{}进行表达式的声明
在@Value()中使用$用来从配置文件(.properties或.yml)中获取的,使用#是从一个定义个bean对象中获取对应属性
#{} 功能比 ${} 功能更强大,强调的是把内容赋值给属性,示例:
定义的bean节点
#{itemBean}——将itemBean注入到customerBean的item属性中
#{itemBean.name}——将itemBean 的name属性,注入到customerBean的属性itemName中
EL表达式使用示例
public class ELConfig {
@Valule("test")//注入字符串
private String name;
@Valule("#{systemProperties['os.name']}")//注入操作系统属性
private String osName;
@Valule("#{T(java.lang.Math).random()*100.0}")//注入表达式结果
private double randomNumber;
@Valule("#{demoService.another}")//注入其他bean属性
private String fromAnother;
@Valule("classpath:com/test/test.txt")//注入文件资源
private Resource testFile;
@Valule("https://www.baidu.com")//注入网址资源
private Resource testUrl;
@Valule("${book.name}")//注入配置文件
private String bookName;
使用?.符号代表若然左边的值为null,将不执行右边方法,
即,当左边不为空才执行右边的方法
@Value("#{testConstant.showProperty()?.toUpperCase}")
private String method4;
判断空,当左边为空就取冒号后的值: #{“name?:'other'”}
@Value("#{test?:'123456'}")
private String name;
注入字符不存在属性值并指定默认值,默认值使用冒号分隔 :
注入常量其实就可以指定一个不存在的配置然后使用默认值,此处test的值为空字符串
@Value("${test:''}")
private String skill;
@@方式常用于引用springboot非默认配置文件
field_name=@field_value@
}