面试官:说下spring生命周期 程序员:不会 那你先回去等消息吧

 
 

Bean实现了BeanNameAware,Spring会将Bean的ID透传给setBeanName

java、后端开发、程序员、spring

经常被面试问到的题目之一

面试失败经历

面试官:请介绍一下Spring框架中Bean的作用域及生命周期?

程序汪汪:不知道

面试官:你工作好多年了,(嫌弃的眼神)那你可以回去等电话

Spring框架中Bean的5个作用域

singleton单例:是spring默认缺省的,全局只有一个对象。

prototype原型:每次都是新的Bean实例,有状态的Bean建议用此类型。

request:一次Http请求中,容器返回同一实例Bean,仅在当前Http Request内有效

session:一次Http Session中,容器返回同一实例Bean,仅在当前Session内有效。

global session:一个全局的Http Session中,容器返回同一个实例Bean。

很多程序员开发,很可能都没注意Bean竟然有这么多种作用域,其实实际项目一般就前面2种会涉及到,但面试官喜欢问。

Bean的生命周期

我多找几个比较好的图,大家对比着理解理解

好多接口好多方法啊,来我们分个类

Bean自身的方法:的init-method和destor-method方法

Bean级生命周期接口方法:包含了BeanNameAware、BeanFacotyAware、InitialiZingBean和DisposableBean 接口方法

Spring容器生命周期接口方法:有BeanPostProcessor"后处理器"

bean对象实例化,默认Bean作用域singleton

Spring对bean进行依赖注入

Bean实现了BeanNameAware,Spring会将Bean的ID透传给setBeanName

Bean实现了BeanFacotryAware或ApplicationContentAware,Spring会调用设置工厂setBeanFatory方法并将BeanFacoty实例透传进来,或SetApplicationContext方法被调用,Spring将应用上下文引用透传到Bean里。

Bean实现了BeanPostProcessor(后处理),bean的postProcessBeforeInitialization方法会被执行

Bean实现了InitializingBean,bean的afterPropertiesSet方法 就会被调用初始化方法init

BeanPostProcessor(后处理),执行postProcessAfterInitialization

这时Bean准备就绪,可以执行业务逻辑被服务方调用了,Bean会一直存活在应用上下文中,直到应用上下文被销毁。

Bean实现DisposableBean,spring将执行destory方法

指定销毁方法 destroy

实战开发中Bean很少都去实现上面的全部接口,一般最多init-method、destroy-method

BeanNameAware源码

BeanFactoryAware源码

 

 

ApplicationContextAware源码

BeanPostProcessor源码 【before/after】

InitializingBean源码

DisposableBean源码

Spring源码

说下spring生命周期的更多相关文章

  1. Spring生命周期详解

    导读 Spring中Bean的生命周期从容器的启动到停止,涉及到的源码主要是在org.springframework.context.support.AbstractApplicationContex ...

  2. spring生命周期

    Github地址 最近在整合mybatis-spring. 公司里面已经有一个叫做kylin-datasource的开发包,以前能够提供master和slave2个数据源,最近更新了2.0版本,支持自 ...

  3. vue生命周期及使用 && 单文件组件下的生命周期

    生命周期钩子 这篇文章主要记录与生命周期相关的问题. 之前,我们讲到过生命周期,如下所示: 根据图示我们很容易理解vue的生命周期: js执行到new Vue() 后,即进入vue的beforeCre ...

  4. Spring学习总结(4)-Spring生命周期的回调

    参考文档:https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans ...

  5. 【源码】spring生命周期

    一.spring生命周期 1. 实例化Bean 对于BeanFactory容器,当客户向容器请求一个尚未初始化的bean时,或初始化bean的时候需要注入另一个尚未初始化的依赖时,容器就会调用crea ...

  6. Spring生命周期 Constructor > @PostConstruct > InitializingBean > init-method

    项目中用到了 afterPropertiesSet: 于是具体的查了一下到底afterPropertiesSet到底是什么时候执行的.为什么一定要实现 InitializingBean; **/ @C ...

  7. spring 生命周期最详解

    转载. https://blog.csdn.net/qq_23473123/article/details/76610052 目的 在大三开始学习spring时,老师就说spring bean周期非常 ...

  8. 七、spring生命周期之初始化和销毁方法

    一.通过@Bean指定初始化和销毁方法 在以往的xml中,我们是这样配置的 <bean id="exampleInitBean" class="examples.E ...

  9. 玩转Spring生命周期之Lifecycle

    Lifecycle callbacks Initialization callbacks.Destruction callbacks要与容器的bean生命周期管理交互,即容器在启动后和容器在销毁前对每 ...

随机推荐

  1. VSTO:使用C#开发Excel、Word【17】

    使用Range对象Range对象表示电子表格中的单元格范围.范围可以包含一个单元格,多个连续的单元格,甚至多个不连续的单元格.您可以在Excel中选择时按住Ctrl键选择多个不连续的单元格. 获取特定 ...

  2. 过滤器(filter),监听器(listener),与servlet的执行顺序

    创建: 加载顺序 监听器-->过滤器-->Servlet.项目启动后,容器会首先创建声明的各种监听器,为后继的各个事件监听做准备,然后创建过滤器,最后是Servlet.销毁的时候是反序进行 ...

  3. 学习Java的第一天

    登录http://www.oracle.com,下载JDK(J2SE)JDK 1.0,1.1,1.2,1.3,1.4 1.5 (JDK5.0) 支持注解.支持泛型 1.6(JDK6.0) Servel ...

  4. ssh: connect to host gitlab.alpha.com port 22: Network is unreachable

    在这里只说明我遇到的问题和解决方法,可能并不能解决你遇到的问题: git clone git@gitlab.alpha.com:ipcam/ambarella.gitCloning into 'amb ...

  5. ItelliJ idea tomcat 配置

    用ItelliJ idea 开发javaWeb. 1. Idea 安装Tomcat 打开Idea,选择设置,并在设置中左边框中选择 Application Servers 点击中间空白框上面的 ’+‘ ...

  6. Post Order traverse binary tree using non-recursive way

    Process analysis Stack = 5,  Push 3, Stack = 5, 3.    Pre = 5 Current = 3, Pre = 5, Push 2 to the st ...

  7. jQuery-1.样式篇---选择器

    jQuery选择器之id选择器 页面的任何操作都需要节点的支撑,开发者如何快速高效的找到指定的节点也是前端开发中的一个重点.jQuery提供了一系列的选择器帮助开发者达到这一目的,让开发者可以更少的处 ...

  8. 【转】@RequestBody注解出现的三点错误

    错误1 {     "timestamp": 1529747704259,     "status": 415,     "error": ...

  9. day06python 哈希 字典集合嵌套

    1.hash算法 hash算法 :内存中将值进行hash算法得到一个数值存储在内存中,查找也会按照算法进行查找,使用hash算法 执行效率高相对于list的索引查找 (字典,集合):使用的是hash查 ...

  10. java中的映射表HashMap、TreeMap

    集(set)是集合(collection),集合不是集. HashMap是散列映射.TreeMap对键进行排序了. map的三个视图:键集.值集合.键/值集. Set<K> keySet( ...