Spring-bean 的管理细节

Spring 对 bean 的管理细节

一:bean 的三种方式

1.使用默认构造函数创建

​ 在spring配置文件中适用bean标签,配置id和class属性后,且没有其他属性标签时,采用的就是默认构造函数创建bean对象,此时如果类中没有默认构造函数,则对象无法创建

<bean id="userService" class="service.impl.UserServiceImpl"></bean>

2.使用普通工厂中的方法创建对象(使用某个类中的方法创建对象,并存入spring容器当中)

public class InstanceFactory {
    public IUserService getIUserService(){
        return new UserServiceImpl();
    }
}

<bean id="instanceFactory" class="factory.InstanceFactory"></bean>-->
<bean id="userService" factory-bean="instanceFactory" factory-method="getIUserService"</bean>

3.使用工厂中的静态方法创建对象(使用某个类中的静态方法创建对象,并存入spring容器)

public class StaticFactory {
    public static IUserService getIUserService(){
        return new UserServiceImpl();
    }
}
<bean id="userService" class="factory.StaticFactory" factory-method="getIUserService"></bean>

调用测试

        //获取核心容器对象
        ApplicationContext ac = new ClassPathXmlApplicationContext("dao.xml");
        //根据ID获取bean对象
        IUserService us = (IUserService) ac.getBean("userService");

二:bean对象的作用范围

即 bean 标签的 scope 属性

  • singleton:单例模式,每次获取都返回同一个实例,相对于同一个IOC容器而言。
  • prototype:原型模式,每次获取返回不同实例,创建后的生命周期不再由IOC容器管理。
  • request:作用域为同一个 Http Request
  • session:作用域为同一个 Http Session
  • global session:被移除
  • application:作用域为同一个WEB容器,可以看做Web应用中的单例模式。
  • websocket:作用域为同一个WebSocket应用。

三:bean对象的生命周期

主要解释单例和多例(原型)

单例 多例
出生 容器创建时对象出生 使用对象时,spring为我们创建
存活 容器存活,则对象一直存活 对象在使用过程中就一直存活
死亡 容器销毁,对象消亡 当对象长时间不使用,且没有其他对象引用,由 java 垃圾回收器回收
posted @ 2020-09-15 11:23  花染梦  阅读(191)  评论(0编辑  收藏  举报