Spring Bean管理--XML方式(上)——(三)

本文详细介绍了Spring框架中Bean的三种实例化方式:无参数构造方法、静态工厂和实例工厂,以及Bean的常用配置、生命周期和初始化与销毁方法的设置。通过具体的代码示例,帮助读者深入理解Bean的实例化过程和生命周期管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 .Bean的三种实例化方式

1.采用无参数的构造方法的方式

创建类 Bean1:

public class Bean1 {
    public Bean1(){
        System.out.println("Bean1被实例化了...");
    }
}

applicationContext.xml里面编写:

<bean id="bean1" class="com.imooc.ioc.demo2.Bean1"/>

测试:

 @Test
    public void demo1(){
        // 创建工厂
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
        // 通过工厂获得类的实例:
        Bean1 bean1 = (Bean1)applicationContext.getBean("bean1");
    }
2.采用静态工厂的方式

创建类Bean2:

/**
 * Bean的实例化三种方式:静态工厂实例化方式
 */
public class Bean2 {

}

创建类Bean2Factory:

/**
 * Bean2的静态工厂
 */
public class Bean2Factory {

    public static Bean2 createBean2(){
        System.out.println("Bean2Factory的方法已经执行了...");
        return new Bean2();
    }

}

applicationContext.xml里面编写:

<bean id="bean2" class="com.imooc.ioc.demo2.Bean2Factory" factory-method="createBean2"/>

测试:

   @Test
    public void demo2(){
        // 创建工厂
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
        // 通过工厂获得类的实例:
        Bean2 bean2 = (Bean2)applicationContext.getBean("bean2");
    }
3.采用实例工厂的方式

创建类 Bean3:

/**
 * Bean的实例化三种方式:实例工厂实例化
 */
public class Bean3 {

}

创建类Bean3Factory:

/**
 * Bean3的实例工厂
 */
public class Bean3Factory {
    public Bean3 createBean3(){
        System.out.println	`("Bean3Factory执行了...");
        return new Bean3();
    }
}

applicationContext.xml里面编写:

<bean id="bean3Factory" class="com.imooc.ioc.demo2.Bean3Factory"/>
<bean id="bean3" factory-bean="bean3Factory" factory-method="createBean3"/>

测试:

@Test
    public void demo3(){
        // 创建工厂
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
        // 通过工厂获得类的实例:
        Bean3 bean3 = (Bean3)applicationContext.getBean("bean3");
    }

二 .Bean的常用配置

id和name:一般情况下,装配一个Bean容器时,通过指定一个id属性作为Bean的名称,id属性在 IOC容器中必须唯一,如果Bean的名称中有特殊字符,就需要使用name属性

class:class用于设置一个类的完全路径名称,主要作用是IOC容器生成类的实例

scope="singleton"——单例模式,scope="prototype"——多例模式

三 .Bean的生命周期

初始化方法和销毁方法:

public void setup(){
        System.out.println("第七步:MAN被初始化了...");
    }

    public void teardown(){
        System.out.println("第十一步:MAN被销毁了...");
    }

applicationContext.xml里面编写:

<bean id="man" class="com.imooc.ioc.demo3.Man" init-method="setup" destroy-method="teardown">

测试代码:

@Test
    public void demo2(){
        ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
        Man man = (Man)applicationContext.getBean("man");

        man.run();

        applicationContext.close();//调用close方法才能显示被销毁
    }

四 .Bean生命周期完整过程

在这里插入图片描述在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值