配置文件占位符:${},主要用于从外部配置文件中获取属性的值
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、字面量
  2. #{1}、#{'Hello'}、#{75.32}
  3. 2、引用bean
  4. #{systemPropertiesName} 或 #{systemEnvironment}:获取系统属性数组,可以赋值给String[]
  5. #{systemPropertiesName['os.name']}:获取操作系统名称
  6. 3、使用运算符
  7. #{email matches '[a-zA-Z0-9._%+-]+@[a-zA-Z0-9._-]+\\.com'}:正则表达式
  8. #{2*T(java.lang.Math).PI * circle.radius}:计算圆周长
  9. #{T(java.lang.Math).PI * circle.radius^2}:计算圆面积