Spring bean的作用域和生命周期
bean的作用域
1.singleton,prototype, web环境下:request,session,gloab session
2.通过scope="" 来进行配置
3.对于singleton spring容器只会创建一个共享实例,prototype则会创建不同的实例
bean的生命周期(bean自身的方法,bean级生命周期接口方法,容器级生命周期接口方法)
分为BeanFactory的生命周期和ApplicationContext的生命周期
1、对于BeanFactory
1、当通过getBean调用某一个bean的时候,首先看容器是否注册(不是bean实现接口,属于容器级生命周期方法)了InstantiationAwareBeanPostProcessor接口,如果注册了,将会调用postProcessBeforeInstantiation()方法。
2、然后实例化bean
3、调用InstantiationAwareBeanPostProcessor接口的postProcessAfterInstantiation()方法
4、设置属性,调用setter()
5、调用BeanNameAware的setBeanName()方法
6、调用BeanFactoryAware中的setBeanFactory()方法
7、调用InstantiationAwareBeanPostProcessor接口的postProcessBeforeInitialization()方法
8、 如果容器注册了BeanPostProcessor接口,调用该接口的postProcessBeforeInitialization()方法
9、调用InitializingBean接口的afterPropertiesSet()方法
10、调用init-method属性配置的方法
11、调用InstantiationAwareBeanPostProcessor接口的postProcessAfterInitialization()方法
12、调用BeanPostProcessor接口的postProcessAfterInitialization()方法
13、如果bean是单例的则把bean实例存入缓冲池由Spring容器继续关系bean的生命周期,否则交由该bean的调用则管理
14、调用DisposableBean接口的方法
15、通过destory-method属性配置的方法
要往ioc容器手动添加BeanPostProcessor的实现类 (ConfigurableBeanFactory)bf.addBeanPostProcessor(new MyBeanPostProcessor());
ApplicationContext中bean的生命周期和BeanFactoty的基本相同,在BeanFactoryAware接口后增加了一个 ApplicationContextAware接口的setApplicationContext()方法。
Spring bean的作用域和生命周期的更多相关文章
- Spring bean的作用域以及生命周期
一.request与session的区别 request简介 request范围较小一些,只是一个请求. request对象的生命周期是针对一个客户端(说确切点就是一个浏览器应用程序)的一次请求,当请 ...
- Spring中Bean的作用域、生命周期
Bean的作用域.生命周期 Bean的作用域 Spring 3中为Bean定义了5中作用域,分别为singleton(单例).protot ...
- Spring之Bean的作用域与生命周期
在前面博客中提到容器启动获得BeanDefinition对象中有一个scope 属性.该属性控制着bean对象的作用域.本章节介绍Bean的作用域及生命周期,了解bean是怎么来的又怎么没的. 一.B ...
- 详解Spring中Bean的作用域与生命周期
摘要:在利用Spring进行IOC配置时,关于bean的配置和使用一直都是比较重要的一部分,同时如何合理的使用和创建bean对象,也是小伙伴们在学习和使用Spring时需要注意的部分,所以这一篇文章我 ...
- Spring中bean的作用域与生命周期
在 Spring 中,那些组成应用程序的主体及由 Spring IOC 容器所管理的对象,被称之为 bean.简单地讲,bean 就是由 IOC 容器初始化.装配及管理的对象,除此之外,bean 就与 ...
- Spring框架系列(三)--Bean的作用域和生命周期
Bean的作用域 Spring应用中,对象实例都是在Container中,负责创建.装配.配置和管理生命周期(new到finalize()) Spring Container分为两种: 1.BeanF ...
- Spring中Bean的作用域和生命周期
作用域的种类 Spring 容器在初始化一个 Bean 的实例时,同时会指定该实例的作用域.Spring3 为 Bean 定义了五种作用域,具体如下. 1)singleton 单例模式,使用 sing ...
- bean的作用域和生命周期
一.Bean作用域 二.生命周期 其中,这个类实现各种接口重写各种方法,会按bean的声明周期按序执行: 其中,自定义的初始化和自定义销毁的方法不是实现接口重写,而是成员方法,并且在装配bean即在x ...
- [05] Bean的作用域和生命周期
1.Bean的作用域和初始化时间 之前我们稍微提到过,Spring中管理的Bean,默认都是单例模式,这意味着你多次获取某个对象,得到的都是相同的对象.单例作用域的显性写法是scope属性,如下,这和 ...
随机推荐
- js 判断IOS版本号
先来观察 iOS 的 User-Agent 串: Phone 4.3.2 系统:Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_2 like Mac OS X; e ...
- Unity中获取物体的子物体
如果想获取一级子节点 foreach (Transform child in this.transform) { Debug.Log(child.name); } 如果想获取所有子节点 foreach ...
- 答:SQLServer DBA 三十问之五:有关视图索引
5. 视图上我们能建索引吗,如果能建的话,会啥好处和坏处:视图上建索引和表上建索引有啥区别: ----------------------------------------------------- ...
- css之页面两列布局
两列布局:左边固定,后边自适应 第一种方法:左边的div左浮动或者是绝对定位,右边的div加margin-left:左边div的宽度 html部分 <div class="left&q ...
- findViewById返回null
Q:findViewById返回null? A: 代码逻辑错误: 最终,发现错误竟然是在layout文件中把android:id写成了android:name. android:name=" ...
- koa2+koa-views示例
app.js var Koa = require('koa') var fs = require('fs') var path = require('path') var koaStaticPlus ...
- 转载:Scalers:要持续行动,不要自我感动
转载自微信公众号:http://mp.weixin.qq.com/s?__biz=MzA4MjIyNDYzMQ==&mid=2650846277&idx=1&sn=5d832a ...
- SpringBoot-Learning
SpringBoot-Learning 本项目内容为Spring Boot教程程序样例. 作者博客:http://blog.didispace.com Spring Boot系列博文:http://b ...
- jquery下拉菜单打开的同时,同行右边的图标变化
1.用bootstrap的折叠面板时,右侧的三角图标随菜单下拉而旋转90°: html代码 <a class="advanced-option" data-toggle=&q ...
- web前端相关网站
传智播客. (有很多公开课的,而且他的百度云盘也有很多东西) http://www.itcast.cn/(这个不是广告,爱信不信) 慕课网 ...