配置文件占位符:${}
,主要用于从外部配置文件中获取属性的值
SpEL 表达式:#{}
,主要用于执行 SpEL 表达式,并将内容赋值给属性
配置文件占位符
占位符语法:${}
占位符作用:
${}
中可以获取框架提供的方法中的值,如 random.int 等;- 占位符可以获取配置文件中的键的值赋给另一个键作为值;
- 主要用于加载外部文件中的值;
生成随机数:
${random.int}
:随机取整形范围内的一个值${random.int(n)}
:随机取整形范围 n 以内的一个值${random.int(n1,n2)}
:随机取整形范围 (n1,n2) 内的一个值${random.long}
:随机取长整形范围内的一个值${random.value}
:类似 uuid 的随机数,没有”-“连接${random.uuid}
:随机uuid,有”-“连接
SpEL 表达式
SpEL 表达式语法:#{}
SpEL 表达式用途:
1、字面量:如 #{1}、#{1.32}
- 字面量赋值应该要与对应的属性类型兼容,否则报错
- 一般字面量赋值时不使用 SpEL 表达式,而是直接赋值
2、引用Bean、属性和方法(必须是 public 修饰)
- SpEL 表达式通过 bean 的 id 引用 bean
- SpEL 支持通过 bean 的引用调用其方法,为了避免操作对象本身可能为null,取属性时报错,定义语法“对象?.变量|方法”
3、支持运算符:
- 算术运算符:+ 、- 、* 、/ 、% 、^
- 字符串连接符:+
- 比较运算符:< 、> 、== 、<= 、>= 、lt 、gt 、eq 、le 、ge
- 逻辑运算符:and、or、not、&&、||、!
- 条件运算符:? true : false(name!=null?name:’other’ 可以简写为 name?:’other’)
- 正则表达式:matches
4、调用静态方法或静态属性:T() 运算符的结果是获取一个 Class 类,可以使用 Class 属性接受,其真正价值在于访问静态方法和常量
5、从集合中获取元素:[] 运算符
1、字面量
#{1}、#{'Hello'}、#{75.32}
2、引用bean
#{systemPropertiesName} 或 #{systemEnvironment}:获取系统属性数组,可以赋值给String[]
#{systemPropertiesName['os.name']}:获取操作系统名称
3、使用运算符
#{email matches '[a-zA-Z0-9._%+-]+@[a-zA-Z0-9._-]+\\.com'}:正则表达式
#{2*T(java.lang.Math).PI * circle.radius}:计算圆周长
#{T(java.lang.Math).PI * circle.radius^2}:计算圆面积