码迷,mamicode.com
首页 > 编程语言 > 详细

Spring Bean

时间:2015-08-06 00:01:19      阅读:246      评论:0      收藏:0      [点我收藏+]

标签:

一、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)

    技术分享

Spring Bean

标签:

原文地址:http://www.cnblogs.com/qingjun/p/4705711.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!