Spring通过配置文件进行bean管理(IOC)

一、bean的作用域

在Spring容器中是指其创建的Bean对象相对于其他Bean对象的请求可见范围,语法格式:

<bean id="" class="" scope="作用域"/>
属性值作用
singleton(默认值)单例, 在Spring IoC容器中仅存在一个Bean实例(默认缺省就是scope)
prototypeprototype: 多例, 每次从容器中调用Bean时,都返回一个新的实例,每次调用getBean()时,相当于执行 new XxxBean(), 不会在容器启动时创建对象.
requestWeb环境下,对象与request生命周期一致
sessionWeb环境下,对象与session生命周期一致
applicationWeb环境下,对象与application生命周期一致

总结:绝大多数情况下,使用单例singleton(默认值),极少数情况使用多例,至于request,session因为jsp技术的淘汰,几乎很少使用。

二、bean的生命周期(了解)

  • 初始化

    配置一个方法作为生命周期初始化方法,spring会在对象创建之后立刻调用 init-method,对应注解为@PostConstruct

  • 销毁

    配置一个方法作为生命周期的销毁方法,spring容器在关闭并销毁所有容器中的对象之前调用destory-method,对应注解为@PreDestory

<bean id="" class="" init-method="该类初始化方法名" destroy-method="该类销毁方法名"/>                   

bean的生命周期: bean从出生–>销毁的整个过程

  1. 启动Spring容器
  2. 创建Bean对象 ----> 实际是在调用Bean对象的构造器
  3. 给Bean添加属性
  4. 调用Bean对象的初始化init-method
  5. getBean获取某个bean对象,调用bean对象的某一个方法
  6. 调用Bean对象的销毁方法destory-method
  7. Spring容器销毁

三、spring三种对象的创建方式

1、无参构造器实例化(使用最多且最重要)

// 类
public class Cat1 {
    public Cat1(){
        System.out.println("构建Cat1");
    }
}

// createBean.xml
<!--1、构造器实例化(无参构造器),使用最多-->
<bean id="cat1" class="com.sunny.Cat1"/>

2、静态工厂方法创建(了解)

// 类
public class Cat2 {
}
// Cat2工厂
public class Cat2Factory {
    public static Cat2 createInstance(){
        Cat2 cat2 = new Cat2();
        return cat2;
    }
}

// createBean.xml
<!--2、静态工厂方法实例化(了解)
        以前使用静态工厂方法: Cat2 cat2 = Cat2Factory.createInstance();来创建,
        现在只不过把这种方式,设置到配置文件中来了
-->
<bean id="cat2" class="com.sunny.createbean._02_static_factory.Cat2Factory"
        factory-method="createInstance"/>

3、实例工厂方法实例化(了解)

// 类
public class Cat3 {
}
// Cat3工厂
public class Cat3Factory {

    public Cat3 createInstance(){
        Cat3 cat3 = new Cat3();
        return cat3;
    }
}

// createBean.xml
<!--3、实例工厂方法实例化(了解)
        第一个bean是创建实例工厂对象,第二个bean是通过实例工厂对象调用工厂方法创建Cat3的对象
-->
<bean id="cat3Factory" class="com.sunny.createbean._03_instance_factory.Cat3Factory"/>
<bean id="cat3" factory-bean="cat3Factory" factory-method="createInstance"/>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值