美文网首页
Spring 实战 五: 运行时注入

Spring 实战 五: 运行时注入

作者: DJN_ | 来源:发表于2018-07-23 08:37 被阅读0次

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

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

    属性占位符

    形式为 "${...}" ,使用 @Value 注解,java 配置需要配置 PropertySourcesPlaceholderConfigurer bean,xml 可通过 <context:property-placeholder /> 开启。


    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

    相关文章

      网友评论

          本文标题:Spring 实战 五: 运行时注入

          本文链接:https://www.haomeiwen.com/subject/ysrdmftx.html