Spring 在 xml配置文件或annotation注解中运用Spring EL
2014-08-20 16:47
531 查看
Spring EL
一:在Spring xml 配置文件中运用 Spring EL
Spring EL 采用 #{Sp Expression Language} 即 #{spring表达式}
1:运用EL表达式的配置文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<!-- more bean definitions for data access objects go here -->
<bean id="book" class="com.myapp.core.spel.xml.Book">
<property name="name" value="Effective Java" />
<property name="pages" value="300"/>
</bean>
<bean id="person" class="com.myapp.core.spel.xml.Person">
<property name="book" value="#{book}" />
<property name="bookName" value="#{book.name}"/>
</bean>
</beans>
在person bean 的配置中, 属性 book 引用了 book bean 通过EL表达式 形式是:<property name="book" value="#{book}" /> 相当于 在person bean中注入 book
person属性中的bookName属性注入了 book bean中的 name的值
2:测试以上配置:
Book类:
package com.myapp.core.spel.xml;
public class Book {
private String name ;
private int pages;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPages() {
return pages;
}
public void setPages(int pages) {
this.pages = pages;
}
}
Person类:package com.myapp.core.spel.xml;
public class Person {
private Book book;
private String bookName;
public void setBook(Book book) {
this.book = book;
}
public Book getBook(){
return this.book;
}
public String getBookName(){
return this.bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
}
测试类:
package com.myapp.core.spel.xml;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MainTest {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("resource/spel.xml");
Person person = (Person)context.getBean("person");
System.out.println(person.getBookName());
System.out.println(person.getBook().getPages());
}
}
输出结果:三月 18, 2013 5:17:18 下午 org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@11e831: startup date [Mon Mar 18 17:17:18 CST 2013]; root of context hierarchy
三月 18, 2013 5:17:18 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [resource/spel.xml]
三月 18, 2013 5:17:18 下午 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@498b39: defining beans [book,person]; root of factory hierarchy
Effective Java
300
二:注解中使用 EL
1:xml中配置,扫描含有注解的包;
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <!-- more bean definitions for data access objects go here --> <context:component-scan base-package="com.myapp.core.spel.annotation" /> </beans>
2:相应的类:
Book类:package com.myapp.core.spel.annotation; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @Component("book") public class Book { @Value("Effective Java") private String name ; @Value("300") private int pages; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getPages() { return pages; } public void setPages(int pages) { this.pages = pages; } }
在book的属性中 注入了值。
Person类:
package com.myapp.core.spel.annotation; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @Component("person") public class Person { @Value("#{book}") private Book book; @Value("#{book.name}") private String bookName; public void setBook(Book book) { this.book = book; } public Book getBook(){ return this.book; } public String getBookName(){ return this.bookName; } public void setBookName(String bookName) { this.bookName = bookName; } }
测试类:
package com.myapp.core.spel.annotation; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class MainTest { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("resource/spel.xml"); Person person = (Person)context.getBean("person"); System.out.println(person.getBookName()); System.out.println(person.getBook().getPages()); } }
测试结果:
三月 18, 2013 5:25:23 下午 org.springframework.context.support.AbstractApplicationContext prepareRefresh INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@11e831: startup date [Mon Mar 18 17:25:23 CST 2013]; root of context hierarchy 三月 18, 2013 5:25:23 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions INFO: Loading XML bean definitions from class path resource [resource/spel.xml] 三月 18, 2013 5:25:24 下午 org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider registerDefaultFilters INFO: JSR-330 'javax.inject.Named' annotation found and supported for component scanning 三月 18, 2013 5:25:24 下午 org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor <init> INFO: JSR-330 'javax.inject.Inject' annotation found and supported for autowiring 三月 18, 2013 5:25:24 下午 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons 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 Effective Java 300
相关文章推荐
- Spring 在 xml配置文件 或 annotation 注解中 运用Spring EL
- Spring 在 xml配置文件 或 annotation 注解中 运用Spring EL表达式
- Spring 在 xml配置文件 或 annotation 注解中 运用Spring EL
- spring3 混合使用 XML 与注解(Annotation)进行 Bean 的配置
- 【spring】让spring的注解和xml配置文件变得优雅,最常用的注解
- Spring中使用注解代替xml配置文件
- spring3 混合使用 XML 与注解(Annotation)进行 Bean 的配置
- Spring配置文件applicationContext.xml(3)开启事务和注解
- Spring中基于配置XML与Annotation注解配置AOP
- 依赖注入(DI)和控制反转(IOC)的详细讲解 spring容器(spring注解实现,而不是xml配置文件)
- spring之aop编程——基于注解、xml配置文件方式
- 8 -- 深入使用Spring -- 4...6 AOP代理:基于注解的XML配置文件的管理方式
- 基于注解的Spring MVC(所需jar包,web.xml配置,Spring文件配置,@Controller,@RequestMapping,@RequestParam,model填参,EL取值)
- Spring ApplicationContext.xml 配置文件常用注解和详解
- Spring 3.0 学习-DI 依赖注入_创建Spring 配置-使用一个或多个XML 文件作为配置文件,使用自动注入(byName),在代码中使用注解代替自动注入,使用自动扫描代替xml中bea
- spring事务控制--xml配置与annotation注解 优先级对比
- Spring注解和XML配置文件孰优孰劣
- 关于使用注解的Spring配置文件的配置<context:annotation-config/>&&<context:component-scan base-package=”XX.XX”/>
- hibernate3使用注解,spring配置文件applicationContext.xml的配置
- 关于spring注解的配置文件说明context:annotation-config和context:component-scan