标签:
一、Spring的几大模块:Data access & Integration、Transcation、Instrumentation、Core Spring Container、Testing。
二、Spring Bean
2.1、声明Bean
a、简单的bean装配方式
<?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"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="duke"
class="springlearnbean.Juggler">
<constructor-arg value="15" />
</bean>
</beans>
public class Juggler implements Performer {
private int beanBags = 3;
public Juggler(){
}
public Juggler(int beanBags){
this.beanBags = beanBags;
}
public void perform(){
System.out.println("JUGGLING "+beanBags + " BEANBAGS");
}
}
public interface Performer {
void perform();
}
b、通过工厂方法创建Bean(构造器为private时使用)
<bean id="sonnet29" class="springlearnbean.sonnet29"/>
<bean id="poeticDuke"
class="springlearnbean.PoeticJuggler">
<constructor-arg value="15"/>
<constructor-arg ref="sonnet29"/>
</bean>
<bean id="theStage" class="springlearnbean.factorymethodbean.Stage" factory-method="getInstance"/>
public class Stage { private Stage(){ } private static class StageSingletonHolder{ private static Stage instance = new Stage(); } public static Stage getInstance(){ return StageSingletonHolder.instance; } }
2、Bean的作用域
所有的Spring Bean 默认为单例(在一个Spring容器中,一个Bean定义只有一个对象实例),若要修改作用域,在bean的定义中加入scope=“XXX”,XXX表示作用域:singleton(默认)、prototype(被实例化任意次)、request(一次HTTP请求中)、session(在一个HTTPsession中)、global-session(在全局的session中)。
3、初始化和销毁Bean
方法一:
定义初始化操作:配置init-method,bean初始化时调用
定义销毁操作:配置destroy-method ,bean销毁前调用
可以不用为每个Bean配置这两个方法,可以配置默认的方法,全局配置<beans>中加入,default-init-method和default-destroy-method。
方法二:
InitializingBean和DisposableBean,让Bean实现这两个接口,InitializingBean声明了一个afterPropertiesSet()方法,作为初始化方法,DisposableBean 声明了一个Destroy()方法,在Bean从应用上下文移除前被调用。
方法二无需配置,Spring自动检测初始化和销毁揭露,但是与Spring的API产生了耦合,推荐使用方法一。
2.2 注入Bean属性
1、注入简单值
使用<property>元素来配置Bean的属性,在<bean></bean>里面加入property标签,Spring调用setter方法,设置属性的值,这些值都是硬编码的值如:String、int、double等。<property name=“song” value=“Jingle Bells”>
2、引用其他的Bean
<property name=“instrument” value=“Bean id”>
3、注入内部Bean
<property name=“instrument”><bean class="com.springinaction.****"><property/>
内部Bean不限于setter注入,还可以把内部Bean装配到构造方法的人参中。
如:
内部Bean不能复用,内部Bean仅仅适合一次注入,而且不能为其他Bean所引用
2.2.1 使用Spring的命名空间p装配属性
步骤:1、在beans标签中加入p的schema URI
2、在bean中 加入 p:属性名 = “属性值”或者 p:引用属性-ref = “bean id”
如:
2.2.4 装配集合
配置集合类型得Bean属性时,Spring提供了4种类型的集合配置元素:<list><set><map><props>
<list>和<set>可以装配集合类型或者数组类型的属性,其成员可以是<ref>元素、<value><bean><null/>也可以包含另外一个<list>作为成员。
用法举例如:
<map> 装配Map集合:
用法如:
<props> 装配properties集合:
2.2.5 装配空值(null)
标签:
原文地址:http://www.cnblogs.com/qingjun/p/4705711.html