3.Spring Bean




一.实例化bean 的三种方式:


1.使用类构造器实例化:


<bean name=“xxx" class="xx.xx.xxxBean"/>


这种方式不做多提,用的最多,最方便。



2.使用静态工厂方法实例化:


    <!--//静态工厂方法实例化-->

    <bean name="iSpring_3" class="com.zyy.service.impl.ISpring_3BeanFactory"
          factory-method="createISpring_3Bean"></bean>


package com.zyy.service;

/**
 * Created by CaMnter on 2014/8/27.
 */
public interface ISpring_3 {

    public void message();

}


package com.zyy.service.impl;

import com.zyy.service.ISpring_3;

/**
 * Created by CaMnter on 2014/8/27.
 */
public class ISpring_3Bean implements ISpring_3 {

    public void message() {

        System.out.println("*****  使用静态工厂方法实例化  *****");

    }
}



package com.zyy.service.impl;


import com.zyy.service.ISpring_3;

/**
 * Created by CaMnter on 2014/8/20.
 */
public class ISpring_3BeanFactory {

    //静态工厂方法实例化
    public static ISpring_3 createISpring_3Bean() {

        return new ISpring_3Bean();

    }

}




    @Test
    public void test_1() throws Exception {

        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");

        ISpring_3 iSpring_3 = (ISpring_3) applicationContext.getBean("iSpring_3");

        iSpring_3.message();

    }









3.使用实例工厂方法实例化:



    <!--//实例化工厂方法实例化-->
    <bean name="iSpring_4BeanFactory" class="com.zyy.service.impl.ISpring_4BeanFactory"></bean>
    <bean name="iSpring_4" factory-bean="iSpring_4BeanFactory" factory-method="createISpring_4Bean"></bean>


package com.zyy.service;

/**
 * Created by CaMnter on 2014/8/27.
 */
public interface ISpring_4 {

    public void message();

}


package com.zyy.service.impl;

import com.zyy.service.ISpring_4;

/**
 * Created by CaMnter on 2014/8/27.
 */
public class ISpring_4Bean implements ISpring_4 {

    public void message() {

        System.out.println("*****  使用实例工厂方法实例化  *****");

    }
}



package com.zyy.service.impl;


import com.zyy.service.ISpring_4;

/**
 * Created by CaMnter on 2014/8/20.
 */
public class ISpring_4BeanFactory {

    //使用实例工厂方法实例化
    public  ISpring_4 createISpring_4Bean() {

        return new ISpring_4Bean();

    }


}



    @Test
    public void test_2() throws Exception {

        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");

        ISpring_4 iSpring_4 = (ISpring_4) applicationContext.getBean("iSpring_4");

        iSpring_4.message();

    }









二.Bean的作用域


通过设置bean节点下的scope的值:


.singleton

 在每个Spring IoC容器中一个bean定义只有一个对象实例。默认情况下会在容器启动

时初始化bean,但我们可以指定Bean节点的lazy-init=“true”来延迟初始化bean,

这时候,只有第一次获取bean会才初始化bean。如:


 <bean name="xxx" class="xx.xx.xxxBean" lazy-init="true"/>


如果想对所有bean都应用延迟初始化,可以在根节点beans设置default-lazy-init=“true“

如下:


<beans  default-lazy-init="true“...>


.prototype

 每次从容器获取bean都是新的对象。

 

.request

.session

.globalsession




但是不建议设置lazy-init的值为true,因为这样只有才调试的时候才知道bean初始化是否

有问题,后造成后期的麻烦,日过在实例化Spring容器的时候就实例化bean,可以早点发现

问题。




bean的初始化,可以是Spring容器实例的同时初始化,可以是设置lazy后,通过采用

getBean后才能初始化。

但是,bean 的销毁,是在Spring 容器关闭时,就被销毁了。




我们可以:

指定Bean的初始化方法和销毁方法


<bean name="xxx" class="xx.xx.xxxBean" init-method="init"destroy-method="close"/>


这就要求需要在bean中定义一个 init()方法 和 close()方法。当bean创建或销毁时

容器分别自动调用方法。









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值