SpEL(Spring Expression Language,Spring表达式语言)的一个重要的做用就是扩展Spring容器的功能,容许在Bean定义中使用SpEL。XML配置文件和Annotation中均可以使用SpEL。在XML和Annotation中使用SpEL时,都须要使用#{ expression }的格式来包装表达式。java
例若有以下的Author类:
spring
public class Author { private String name; private List<String> books; private Object obj; //省略getter 和 setter }
这个Author类须要注入name和books属性。固然,能够按照之前的方式进行配置,但若是使用SpEL,将能够对Spring配置文件进一步简化:
express
由于本例要用到Spring的p命名空间和util命名空间,故先在applicationContext.xml文件的<beans>元素中增长如下内容:
app
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:
spa
<!-- 使用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配置。code