创建步骤:
(1)创建ExpressionParser对象。表达式解析器。
(2)调用ExpressionParser对象的parseExpresssion方法解析字符串,得到Expression对象。(3)调用Expression对象的getValue()方法,即可得到表达式的值。
eg1:基本语法
eg2:变量语法
变量语法:
abc.xyz: 获取Context中根对象的getAbc().getXyz()的返回值。
#abc.xyz:获取Context名为abc的对象的getXyz()返回值。
eg3:简化配置文件中的配置,消除子元素
在Spring配置文件中使用Sp EL, 将Sp EL表达式放在 #{} 里面即可。
在Spring配置文件中, 求表达式值的Context就是Spring容器本身
修改前的代码可参考修改前
修改后源码:
<!-- JFrame mainWin = new JFrame("我的窗口"); -->
<bean id="mainWin" class="javax.swing.JFrame"
c:_0="我的窗口"
p:visible="true"
/>
<!-- JTextArea jta = new JTextArea(9 ,60); -->
<bean id="jta" class="javax.swing.JTextArea"
c:_0="9"
c:_1="60"
/>
<!--mainWin.add( new JScrollPane(jta) );(使用嵌套bean) -->
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"
p:targetObject-ref="mainWin"
p:targetMethod="add"
p:arguments="#{ {new javax.swing.JScrollPane(jta)} }"
/>
<!-- JPanel jp = new JPanel(); -->
<bean id="jp" class="javax.swing.JPanel"/>
<!-- mainWin.add(jp , BorderLayout.SOUTH); -->
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"
p:targetObject-ref="mainWin"
p:targetMethod="add"
p:arguments="#{ {jp,T(java.awt.BorderLayout).SOUTH} }"/>
<!-- JButton okBn = new JButton("确定"); -->
<bean id="okBn" class="javax.swing.JButton"
c:_0="确定"
/>
<!-- jp.add(okBn); -->
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"
p:targetObject-ref="jp"
p:targetMethod="add"
p:arguments="#{ {okBn} }"/>
<!-- JButton cancelBn = new JButton("取消"); -->
<bean id="cancelBn" class="javax.swing.JButton" c:_0="取消"/>
<!-- jp.add(cancelBn); -->
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"
p:targetObject-ref="jp"
p:targetMethod="add"
p:arguments="#{ {cancelBn} }"/>
<!-- mainWin.pack();-->
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"
p:targetObject-ref="mainWin"
p:targetMethod="pack"
/>