码迷,mamicode.com
首页 > 编程语言 > 详细

Spring bean

时间:2018-10-26 19:36:09      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:art   方法   准备   csdn   let   需要   ssi   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

Spring bean

标签:art   方法   准备   csdn   let   需要   ssi   bean   声明   

原文地址:https://www.cnblogs.com/LinsenLi/p/9857827.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!