zoukankan      html  css  js  c++  java
  • 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 垃圾回收器回收
  • 相关阅读:
    hibernate之初学复合主键
    hibernate之初学增删改查
    hibernate之配置文件帮助文档
    hibernate之初学项目搭建
    Python调用OpenCV读显写
    C++写入txt
    C++逐词读取txt
    C++逐行读取txt
    C#调用C++系列二:传结构体
    C#调用C++系列一:简单传值
  • 原文地址:https://www.cnblogs.com/huaranmeng/p/13672120.html
Copyright © 2011-2022 走看看