Spring 实战 五: 运行时注入

spring 提供了两种在运行时求值的方式:

  1. 属性占位符(Property placeholder)
  2. spring 表达式语言(SpEL)

image.png
image.png

属性占位符

形式为 “${…}” ,使用 @Value 注解,java 配置需要配置 PropertySourcesPlaceholderConfigurer bean,xml 可通过 开启。
image.png
image.png

xml 中也可通过 “${…}” 的形式使用。

使用 spring 表达式语言装配

  1. 使用 bean id 引用其他 bean
  2. 调用方法和访问对象属性
  3. 对值进行算术、关系和逻辑运算
  4. 正则表达式匹配
  5. 集合操作

SpEL 要放到 “#{…}” 表达式中,在 xml 中也可以使用。

#{T(System).currentTimeMillis()}

T()表达式用于将括号内表达式视为 java 类,能够访问目标类型的静态方法和常量。也直接装配目标类型。

#{envOne.version}

envOne 为 bean 的 id,可获得其可访问成员的值

#{systemProperties[‘jnidispatch.path’]}

systemProperties获取系统属性

#{envOne.getClass().toString().toUpperCase()}

调用 bean 的方法

#{envOne.getStr(true)?.toUpperCase()}

envOne.getStr(true) 返回 null 就不调用 toUpperCase 方法

#{T(java.lang.Math).random()}

调用 java 类的静态方法
image.png

字面值

#{3.1415926}
#{‘Hello’}
#{false}
#{9.87E4}
image.png

运算符

算术:+ - * / % ^
比较:< > == <= >= lt gt eq le ge
逻辑:and or not |
条件:?: (ternary) ?: (Elvis) 三元运算符,Elvis 表达式
正则:matches
image.png
image.png

集合

image.png
image.png
image.png

测试

image.png
image.png

猜你喜欢

转载自blog.csdn.net/aimeimeits/article/details/81161639
今日推荐