• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
阿呆草原狼
博客园    首页    新随笔    联系   管理    订阅  订阅
Spring Bean

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

    

posted on 2015-08-05 22:08  阿呆草原狼  阅读(209)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3