Spring Bean定义中表达式语言的支持

    SpEL(Spring Expression Language,Spring表达式语言)的一个重要的作用就是扩展Spring容器的功能,允许在Bean定义中使用SpEL。XML配置文件和Annotation中都可以使用SpEL。在XML和Annotation中使用SpEL时,都需要使用#{ expression }的格式来包装表达式。

    例如有如下的Author类:

?


1

2

3

4

5

6

public class Author {

    private String name;

    private List<String> books;

    private Object obj;

    //省略getter 和 setter

}

    这个Author类需要注入name和books属性。当然,可以按照以前的方式进行配置,但如果使用SpEL,将可以对Spring配置文件进一步简化:

    因为本例要用到Spring的p命名空间和util命名空间,故先在applicationContext.xml文件的<beans>元素中增加以下内容:

?


1

2

3

4

xmlns:p="http://www.springframework.org/schema/p"

xmlns:util="http://www.springframework.org/schema/util"

http://www.springframework.org/schema/util

http://www.springframework.org/schema/util/spring-util-3.0.xsd

    然后配置Bean:

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

<!-- 使用util.priperties加载指定的资源文件 -->

<util:properties id="config" location="classpath:config_zh_CN.properties" />

<bean id="author" class="com.abc.Author">

    <!-- 在表达式中调用方法 -->

    p:name="#{'abcdef'.subString(0,3)}"

    p:obj="#{new java.lang.Object()}"

    <property name="books">

        <list>

            <!-- 在表达式中访问其他Bean的属性 -->

            <value>#{config.book1}</value>

            <value>#{config.book2}</value>

            <value>#{config.book3}</value>

        </list>

    </property>

</bean>

    上面的代码就是利用SpEL进行配置的,使用SpEL可以在配置文件中调用方法、创建对象(这种方式可以代替嵌套Bean语法),访问其他Bean的属性等等。总之,SpEL支持的语法都可以在这里使用,SpEL极大的简化了Spring配置。

时间: 2024-08-02 22:44:12

Spring Bean定义中表达式语言的支持的相关文章

jsp页面中表达式语言中的$符号不起作用的解决方法_JSP编程

今天myeclipse里部署了之前做的一个测试项目,发现jsp里的$符号tomcat启动后页面上显示出来了,百度搜了下别人也有类似的问题出现过.经提醒原来是web.xml配置的version设置的是2.5而我tomcat5启动的.是tomcat的版本低于web的版本,从而导致$符号不能正常使用. 后将tomcat5改用tomcat6.jdk采用1.6 启动spring2.5项目.$显示问题解决. 以下是网上摘录的详细说明: 在jsp页面中用表达式语言中的$符号,如${pageScope.titl

Spring-Context之九:在bean定义中使用继承

定义bean时有个abstract属性,可以设置为true或false,默认为false. 1 2 3 4 <bean id="animal" class="Animal" abstract="true"> <property name="name" value="elephant"/> <property name="legs" value="4

《Spring攻略(第2版)》——1.2 配置Spring IoC容器中的Bean

1.2 配置Spring IoC容器中的Bean 1.2.1 问题 Spring提供了一个强大的IoC容器来管理组成应用的bean.为了利用容器服务,你必须配置运行于Spring IoC容器中的Bean. 1.2.2 解决方案 你可以通过XML文件.属性文件.注释甚至API来配置Spring IoC容器中的Bean. Spring允许你在一个或者多个bean配置文件中配置bean.对于简单的应用程序,可以在单个配置文件中集中配置bean.但是对于有许多bean的大型应用,你应该根据其功能(例如控

《精通Spring MVC 4》——2.6 Spring表达式语言

2.6 Spring表达式语言 当使用"${}"语法时,我们实际上使用的是Spring表达式语言(Spring Expression Language,SpEL).关于EL,有多个不同的变种,而SpEL是其中威力强大的一种. 表2-2是它主要特性的概览. SpEL的用处并不仅限于视图之中,可以将它用在Spring框架的各种地方,例如,在通过@Value注解往bean中注入属性时,也可以使用SpEL. 从请求参数中获取数据我们已经能够在视图中展现来自服务端的数据,但是,如果想获取用户的输

在ASP.NET MVC中通过URL路由实现对多语言的支持

对于一个需要支持多语言的Web应用,一个很常见的使用方式就是通过请求地址来控制界面呈现所基于的语言文化,比如我们在表示请求地址的URL中将上语言文化代码(比如en或者en-US)来指导服务器应该采用怎样的语言来显示界面的内容.对于一个ASP.NET MVC应用来说,我们很容易通过URL路由来实现这样一个功能. 在具体介绍实现之前,我们通过一个简单的例子谈谈最终实现的效果.在通过ASP.NET MVC项目模板创建的空Web应用中,我们创建了如下一个HomeController,默认的Action方

Spring 2.0中新的Bean类型实现原理

我们知道,在Spring2.0中,除了singleton及prototype两种类型的Bean以外.默认情况下还增加了request.session及global session三种类型的Bean,增加的三种类型的Bean主要应用于Web应用程序中.本文不打算分析三种类型的Bean的用法,只是简单分析框架的实现原理. Spring2.0中新增了一个用来表示Bean范围的Scope接口 public interface Scope { Object get(String name, ObjectF

spring bean加载--从缓存中获取bean

标签:spring源码学习 入口方法:getSingleton,在 Object sharedInstance = getSingleton(beanName); @Override public Object getSingleton(String beanName) { return getSingleton(beanName, true); } 真正的实现: protected Object getSingleton(String beanName, boolean allowEarlyR

Spring在代码中获取bean的方法小结_java

一.通过Spring提供的ContextLoader WebApplicationContext wac = ContextLoader.getCurrentWebApplicationContext(); wac.getBean(beanID); 这种方式不依赖于servlet,不需要注入的方式.但是需要注意一点,在服务器启动时,Spring容器初始化时,不能通过这种方法获取Spring容器 二.实现接口ApplicationContextAware 定义工具类 public class Sp

【spring bean】 spring中bean之间的引用以及内部bean

在spring中会有如下的几种情况: 1.在当前容器中,(即在spring.xml这一个配置文件中),一个bean引用了另一个bean. 使用 1>  <ref  bean="另一个bean的id" /> 1.1 构造器 1.2 setter   2>ref作属性 -----2.1  -构造器注入:<constructor-arg   index="0"  ref="另一个bean的id"  />     --