zoukankan      html  css  js  c++  java
  • Spring bean

    Spring中的bean默认都是单例的

    一共有5种作用域:singleton、prototype、request、session和global session

    设置方式只需要在形如:<bean id="XXX" class="com.mori.XXX" scope="singleton" />

    1、Singleton是单例类型,就是在创建起容器时就同时自动创建了一个bean的对象,不管你是否使用,他都存在了,每次获取到的对象都是同一个对象。

    2、Prototype是原型类型,它在我们创建容器的时候并没有实例化,而是当我们获取bean的时候才会去创建一个对象,而且我们每次获取到的对象都不是同一个对象。

      另外三种作用域仅在基于web的应用中使用,作用域自行体会

    我们可以指定bean节点的lazy-init="true"来延迟初始化bean,这时候,只有在第一次获取bean时才会初始化bean,即第一次请求该bean时才初始化。
    形如:<bean id="XXX" class="com.mori.XXX" scope="singleton" lazy-init="true" />

    在单例模式中,Spring在创建对象的时候先调用构造器,然后调用init-method属性值中所指定的方法。对象在被销毁的时候,会调用destroy-method属性值中所指定的方法。
    形如:<bean id="XXX" class="com.mori.XXX" scope="singleton" init-method="init" destroy-method="destory" lazy-init="true" /> init以及destory都是这个bean中的方法。
    在非单例模式中,请求每一个prototype的bean时,Spring容器都会调用其构造器创建这个对象,然后调用init-method属性值中所指定的方法。对象销毁的时候,Spring容器不会帮我们调用任何方法,因为是非单例,这个类型的对象有很多个,Spring容器一旦把这个对象交给你之后,就不再管理这个对象了。

    Bean的生命周期:
    1、Spring对bean进行实例化,默认bean是单例
    2、Spring对bean进行依赖注入
    3、检查该bean是不是实现了指定的接口,有spring就去调用这些实现的方法,包括上面说的init-method属性声明
    4、此时bean已经准备就绪,可以被应用程序使用了,他们将一直驻留在应用上下文中
    5、销毁时也是看有没有实现指定销毁接口,或者destroy-method属性声明

    参考:https://blog.csdn.net/fuzhongmin05/article/details/73389779

  • 相关阅读:
    mysql 修改表
    mac下安装MySQL 5.7
    win&linux下path中%%与$ 以及;与:区别,
    PATH
    转 path设置方式
    MyEclipse乱码问题
    03 最大的数据库 information_schema介绍以及sql注入第一题题解
    02.mysql数据库 基本命令
    01.Windows进入MySQL数据库
    Web web4
  • 原文地址:https://www.cnblogs.com/LinsenLi/p/9857827.html
Copyright © 2011-2022 走看看