Spring  EL

一:在Spring xml 配置文件中运用   Spring EL

Spring EL 采用 #{Sp Expression  Language} 即 #{spring表达式}

1:运用EL表达式的配置文件如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xsi:schemaLocation="http://www.springframework.org/schema/beans
  6. http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  7. http://www.springframework.org/schema/context
  8. http://www.springframework.org/schema/context/spring-context-3.0.xsd">
  9. <!-- more bean definitions for data access objects go here -->
  10. <bean id="book" class="com.myapp.core.spel.xml.Book">
  11. <property name="name" value="Effective Java" />
  12. <property name="pages" value="300"/>
  13. </bean>
  14. <bean id="person" class="com.myapp.core.spel.xml.Person">
  15. <property name="book" value="#{book}" />
  16. <property name="bookName" value="#{book.name}"/>
  17. </bean>
  18. </beans>

在person  bean 的配置中, 属性 book 引用了  book bean 通过EL表达式 形式是:<property name="book" value="#{book}" /> 相当于 在person bean中注入 book

person属性中的bookName属性注入了 book bean中的 name的值  

2:测试以上配置:

Book类:
  1. package com.myapp.core.spel.xml;
  2. public class Book {
  3. private  String  name ;
  4. private  int   pages;
  5. public String getName() {
  6. return name;
  7. }
  8. public void setName(String name) {
  9. this.name = name;
  10. }
  11. public int getPages() {
  12. return pages;
  13. }
  14. public void setPages(int pages) {
  15. this.pages = pages;
  16. }
  17. }

Person类:

  1. package com.myapp.core.spel.xml;
  2. public class Person {
  3. private  Book  book;
  4. private  String  bookName;
  5. public void setBook(Book book) {
  6. this.book = book;
  7. }
  8. public Book getBook(){
  9. return  this.book;
  10. }
  11. public  String   getBookName(){
  12. return  this.bookName;
  13. }
  14. public void setBookName(String bookName) {
  15. this.bookName = bookName;
  16. }
  17. }
 

测试类:

  1. package com.myapp.core.spel.xml;
  2. import org.springframework.context.ApplicationContext;
  3. import org.springframework.context.support.ClassPathXmlApplicationContext;
  4. public class MainTest {
  5. public static void main(String[] args) {
  6. ApplicationContext  context  = new  ClassPathXmlApplicationContext("resource/spel.xml");
  7. Person  person =  (Person)context.getBean("person");
  8. System.out.println(person.getBookName());
  9. System.out.println(person.getBook().getPages());
  10. }
  11. }

输出结果:

  1. 三月 18, 2013 5:17:18 下午 org.springframework.context.support.AbstractApplicationContext prepareRefresh
  2. INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@11e831: startup date [Mon Mar 18 17:17:18 CST 2013]; root of context hierarchy
  3. 三月 18, 2013 5:17:18 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
  4. INFO: Loading XML bean definitions from class path resource [resource/spel.xml]
  5. 三月 18, 2013 5:17:18 下午 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
  6. INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@498b39: defining beans [book,person]; root of factory hierarchy
  7. Effective Java
  8. 300

二:注解中使用 EL

1:xml中配置,扫描含有注解的包;

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xsi:schemaLocation="http://www.springframework.org/schema/beans
  6. http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  7. http://www.springframework.org/schema/context
  8. http://www.springframework.org/schema/context/spring-context-3.0.xsd">
  9. <!-- more bean definitions for data access objects go here -->
  10. <context:component-scan base-package="com.myapp.core.spel.annotation" />
  11. </beans>

2:相应的类:

Book类:
  1. package com.myapp.core.spel.annotation;
  2. import org.springframework.beans.factory.annotation.Value;
  3. import org.springframework.stereotype.Component;
  4. @Component("book")
  5. public class Book {
  6. @Value("Effective Java")
  7. private  String  name ;
  8. @Value("300")
  9. private  int   pages;
  10. public String getName() {
  11. return name;
  12. }
  13. public void setName(String name) {
  14. this.name = name;
  15. }
  16. public int getPages() {
  17. return pages;
  18. }
  19. public void setPages(int pages) {
  20. this.pages = pages;
  21. }
  22. }

在book的属性中 注入了值。

Person类:
  1. package com.myapp.core.spel.annotation;
  2. import org.springframework.beans.factory.annotation.Value;
  3. import org.springframework.stereotype.Component;
  4. @Component("person")
  5. public class Person {
  6. @Value("#{book}")
  7. private  Book  book;
  8. @Value("#{book.name}")
  9. private  String  bookName;
  10. public void setBook(Book book) {
  11. this.book = book;
  12. }
  13. public Book getBook(){
  14. return  this.book;
  15. }
  16. public  String   getBookName(){
  17. return  this.bookName;
  18. }
  19. public void setBookName(String bookName) {
  20. this.bookName = bookName;
  21. }
  22. }

在Person类中 

  1. @Value("#{book}")
  2. private  Book  book;

注入book到person 通过EL表达式的方式

  1. @Value("#{book.name}")
  2. private  String  bookName;

同样以上的bookName也是通过EL表达式的方式

 
测试类:
  1. package com.myapp.core.spel.annotation;
  2. import org.springframework.context.ApplicationContext;
  3. import org.springframework.context.support.ClassPathXmlApplicationContext;
  4. public class MainTest {
  5. public static void main(String[] args) {
  6. ApplicationContext  context  = new  ClassPathXmlApplicationContext("resource/spel.xml");
  7. Person  person =  (Person)context.getBean("person");
  8. System.out.println(person.getBookName());
  9. System.out.println(person.getBook().getPages());
  10. }
  11. }

测试结果:

  1. 三月 18, 2013 5:25:23 下午 org.springframework.context.support.AbstractApplicationContext prepareRefresh
  2. INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@11e831: startup date [Mon Mar 18 17:25:23 CST 2013]; root of context hierarchy
  3. 三月 18, 2013 5:25:23 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
  4. INFO: Loading XML bean definitions from class path resource [resource/spel.xml]
  5. 三月 18, 2013 5:25:24 下午 org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider registerDefaultFilters
  6. INFO: JSR-330 'javax.inject.Named' annotation found and supported for component scanning
  7. 三月 18, 2013 5:25:24 下午 org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor <init>
  8. INFO: JSR-330 'javax.inject.Inject' annotation found and supported for autowiring
  9. 三月 18, 2013 5:25:24 下午 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
  10. INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@543360: defining beans [book,person,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor]; root of factory hierarchy
  11. Effective Java

Spring 在 xml配置文件 或 annotation 注解中 运用Spring EL表达式的更多相关文章

  1. Spring 通过XML配置文件以及通过注解形式来AOP 来实现前置,环绕,异常通知,返回后通知,后通知

    本节主要内容: 一.Spring 通过XML配置文件形式来AOP 来实现前置,环绕,异常通知     1. Spring AOP  前置通知 XML配置使用案例     2. Spring AOP   ...

  2. Spring框架xml配置文件 复杂类型属性注入——数组 list map properties DI dependency injection 依赖注入——属性值的注入依赖于建立的对象(堆空间)

    Person类中的各种属性写法如下: package com.swift.person; import java.util.Arrays; import java.util.List; import ...

  3. JavaWeb_(Spring框架)xml配置文件

    系列博文 JavaWeb_(Spring框架)xml配置文件  传送门 JavaWeb_(Spring框架)注解配置 传送门 Xml配置 a)Bean元素:交由Spring管理的对象都要配置在bean ...

  4. Spring根据XML配置文件注入对象类型属性

    这里有dao.service和Servlet三个地方 通过配过文件xml生成对象,并注入对象类型的属性,降低耦合 dao文件代码: package com.swift; public class Da ...

  5. spring读取xml配置文件(二)

    一.当spring解析完配置文件名的占位符后,就开始refresh容器 @Override public void refresh() throws BeansException, IllegalSt ...

  6. spring 基于xml的申明式AspectH中的后置通知的返回值获取

    spring 基于xml的申明式AspectH中的后置通知的返回值获取 1. 配置文件 <aop:config> <aop:aspect ref="myAspect&quo ...

  7. 如何配置多个Spring的xml配置文件(多模块配置)

    如何使用多个Spring的xml配置文件(多模块配置) (2009-08-22 13:42:43)   如何使用多个Spring的xml配置文件(多模块配置) 在用Struts Spring Hibe ...

  8. [error] eclipse编写spring等xml配置文件时只有部分提示,tx无提示

    eclipse编写spring等xml配置文件时只有<bean>.<context>等有提示,其他标签都没有提示 这时就需要做以下两步操作(下面以事务管理标签为例) 1,添加命 ...

  9. JS中如何使用EL表达式中的对象

    JS中如何使用EL表达式中的对象 2017年09月25日 15:33:09 lhpnba 阅读数:4859   1.js中使用el表达式要加双引号或单引号:'${list}' 2.js变量获取el表达 ...

随机推荐

  1. 19JDBC初体验

    一.JDBC常用类和接口 JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API.JDBC是Java访问数据库的标准规范,可以为 ...

  2. kvm 一些web管理3方工具

    OpenNebula  Proxmox VE 

  3. Git——入门操作加创建账号【三】

    创建账号 GitHub https://github.com/ 码云 https://gitee.com/ 无论是github还是码云,创建账号都是非常简单快捷的,大家可以自行选择创建下,不过建议最好 ...

  4. C# 动态调用泛型方法

    static void Main(string[] args) { #region 具体类型可传递. Personal specifiedPersonal = new Personal(); Empl ...

  5. The Cow Lexicon POJ - 3267 dp

    题意  给出一个母串  和一个字典 问母串最少删去几个字母     删去后的母串是由字典里面的单词拼起来的 思路:dp[i]表示从i到母串结尾最少需要删除多少个字母  初始化dp[length]=0 ...

  6. Asteroids POJ - 3041 匈牙利算法+最小点覆盖König定理

    题意: 给出一个N*N的地图N   地图里面有K个障碍     你每次可以选择一条直线 消除这条直线上的所有障碍  (直线只能和列和行平行) 问最少要消除几次 题解: 如果(x,y)上有一个障碍 则把 ...

  7. scrapy 登陆知乎

    参考 https://github.com/zkqiang/Zhihu-Login # -*- coding: utf-8 -*- import scrapy import time import r ...

  8. hdu 5877 Weak Pair (Treap)

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=5877 题面; Weak Pair Time Limit: 4000/2000 MS (Java/Other ...

  9. git errot

    常用 git 基础命令 1.错误信息 使用TortoiseGit执行pull命令时显示 git.exe pull --progress --no-rebase -v "origin" ...

  10. Nowcoder | [题解-N210]牛客OI月赛2-提高组

    比赛连接戳这里^_^ 我才不会说这是我出的题(逃) 周赛题解\((2018.10.14)\) \(T1\) \(25\sim50\)分做法\(:\)直接爆搜 作为一个良心仁慈又可爱的出题人当然\(T1 ...