SpEL Spring Expression Language
语法结构#{}
能取值 需要外部的文件 类似上一文档刚讲过的properties ${key}
Spring管理对象的DI注入
- 管理对象属性的注入 基本类型 int float boolean String
<bean id="computer" class="domain.Computer">
<constructor-arg name="name" value="#{'huawei'}"></constructor-arg>
<constructor-arg name="price" value="#{8000}"></constructor-arg>
<constructor-arg name="status" value="#{true}"></constructor-arg>
</bean>
- 赋值同时做一些运算
算术 + - * / %都没有问题 ^Java是位运算 ^Spring是幂运算
比较 > >= < <= != == gt ge lt le ne eq
逻辑 没有与符号 || ! and or not
<bean id="computer" class="domain.Computer">
<constructor-arg name="name" value="#{'huawei'}"></constructor-arg>
<constructor-arg name="price" value="#{100^2}"></constructor-arg>
<constructor-arg name="status" value="#{10>5}"></constructor-arg>
</bean>
- 赋值的时候可能遇到对象形式(可以操作对象的属性和方法)
<bean id="logo" class="domain.Logo">
<constructor-arg name="name" value="huawei"></constructor-arg>
<constructor-arg name="color" value="grey"></constructor-arg>
</bean>
<bean id="computer" class="domain.Computer">
<constructor-arg name="name" value="#{logo.name}"></constructor-arg>
<constructor-arg name="price" value="#{100^2}"></constructor-arg>
<constructor-arg name="status" value="#{logo.name.equals('weihua')}"></constructor-arg>
<constructor-arg name="logo" value="#{logo}"></constructor-arg>
</bean>
可以引入静态常量
<bean id="logo" class="domain.Logo">
<constructor-arg name="name" value="huawei"></constructor-arg>
<constructor-arg name="color" value="grey"></constructor-arg>
</bean>
<bean id="computer" class="domain.Computer">
<constructor-arg name="name" value="#{logo.name}"></constructor-arg>
<constructor-arg name="price" value="#{T(Math).PI}"></constructor-arg>
<constructor-arg name="status" value="#{logo.name.equals('weihua')}"></constructor-arg>
<constructor-arg name="logo" value="#{logo}"></constructor-arg>
</bean>