• 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 垃圾回收器回收
  • 相关阅读:
    leetcode刷题笔记四十四 通配符匹配
    leetcode刷题笔记四十三 字符串相乘
    leetcode刷题笔记四十二 接雨水
    Scala 学习 -- 其他集合类学习
    Scala 学习 -- 列表
    leetcode刷题笔记四十一 缺失的第一个正数
    HTML5每日一练之OL列表的改良
    HTML5边玩边学(1)画布实现方法
    html5 +css3 第一章学习和笔记
    HTML5每日一练之figure新标签的应用
  • 原文地址:https://www.cnblogs.com/huaranmeng/p/13672120.html
Copyright © 2020-2023  润新知