Spring(二、Bean的配置、Bean的实例化、生命周期)

一、Bean的配置

  • id:spring容器内bean的唯一标识 
  • class:bean的类型(被配置的bean的全路径名)
  • name:bean的别名,可用逗号,分号,空格间隔多个别名
  • scope:定义bean的作用范围(singleton:默认、prototype)
    <!--
        id:bean的id,每个容器的唯一值
        class:bean的类型,即被配置的bean的全路径类名
        name:bean别名,可已逗号,分号,空格去间隔多个名称
        scope:定义bean的作用范围:
                                singleton:单例(默认)
                                prototype:非单例
    -->
    <bean id="bookDaoId" name = "bookDao,bd" class="dao.impl.BookDaoImp" scope="prototype" />

    <bean id="bookService" class="service.impl.BookServiceImp" scope="prototype">
        <property name="bookDao" ref="bd" />
    </bean>

适合交给Spring容器管理的bean

  • 表现层对象
  • 业务层对象
  • 数据层对象
  • 工具对象

不适合管理的bean

  • 封装的实体对象(pojo类)

 

 二、Bean的实例化(创建)

  • 构造器(空参)
  • 静态工厂

bean的本质就是对象,所以创建bean使用构造方法完成

在pom.xml导入junit和spring

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.3.9</version>
        </dependency>

 

2.1、构造器(空参)

1,我们在boodDao的构造器内添加一句话,注意这里构造器的类型是private

  

 2,加载到applicationContext.xml容器

 

3, 编写测试类调用save方法 

 4, 验证结果 

 

假如我们在构造器里传入参数,则会报如下异常

Failed to instantiate [dao.impl.BookDaoImp]: No default constructor found; 

 总结:spring通过暴力反射调用类的构造方法(空参)完成对象的实例化

 

2.2、静态工厂 

首先准备一个静态工厂

1,,OrderDao接口

public interface OrderDao {
    void save();
}

2,OrderDaoImp实现类

import dao.OrderDao;

public class OrderDaoImp implements OrderDao {
    @Override
    public void save() {
        System.out.println("人家是OrderDao~~~~");
    }
}

3,OrderDaoFactory工厂类

import dao.OrderDao;
import dao.impl.OrderDaoImp;

public class OrderDaoFactory {
    public static OrderDao getOderDao(){
        return new OrderDaoImp();
    }
}

4,ApplicationContext.xml

5,测试类和测试结果

 

三、Bean的生命周期 

 使用配置:

 使用接口: 

 要想正常运行销毁方法,我们需要在容器关闭前触发bean的销毁

手动关闭:ConfigurableApplicationContext接口的close()方法

注册关闭钩子,在虚拟机退出前先关闭容器再退出虚拟器:ConfigurableApplicationContext接口的registerShutdownHook()方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白日日白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值