1.Spring对bean进行实例化 2.Spring将值和bean的引用注入到bean对应的属性中(比如说注入到被依赖的bean的方法中或属性里) 3.如果bean实现了BeanNameAware接口,将会将bean的Id传入setBeanName()方法中 4.如果bean实现了BeanFactoryAware接口,将会设置bean的BeanFactory的引用传入到setBeanFactory()方法中 5.如果bean实现了ApplicationContextAware接口,Spring…
概述 本文描述下Spring的实例化.初始化.销毁,整个SpringBean生命周期,聊一聊BeanPostProcessor的回调时机.Aware方法的回调时机.初始化方法的回调及其顺序.销毁方法的回调及其顺序.重要的BeanPostProcessor的介绍. 开头是一张我画的调用流转图,然后就是我写的一个Demo通过日志打印了SpringBean的生命周期,最后通过源码慢慢跟进其生命周期. 生命周期流转图 生命周期Demo 如下对某一个Bean进行getBean操作,最后销毁上下文,通过日志…
<对线面试官>系列目前已经连载25篇啦!有深度风趣的系列! [对线面试官]Java注解 [对线面试官]Java泛型 [对线面试官] Java NIO [对线面试官]Java反射 && 动态代理 [对线面试官]多线程基础 [对线面试官] CAS [对线面试官]synchronized [对线面试官]AQS&&ReentrantLock [对线面试官]线程池 [对线面试官]ThreadLocal [对线面试官]CountDownLatch和CyclicBarrier…
bean作用域 在Bean容器启动会读取bean的xml配置文件,然后将xml中每个bean元素分别转换成BeanDefinition对象.在BeanDefinition对象中有scope 属性,就是它控制着bean的作用域. Spring框架支持5种作用域,有三种作用域是当开发者使用基于web的ApplicationContext的时候才生效的.下面就是Spring直接支持的作用域了,当然开发者也可以自己定制作用域. 作用域 描述 单例(singleton) (默认)每一个Spring IOC…
Spring作为当前Java最流行.最强大的轻量级框架,受到了程序员的热烈欢迎.准确的了解Spring Bean的生命周期是非常必要的.我们通常使用ApplicationContext作为Spring容器.这里,我们讲的也是 ApplicationContext中Bean的生命周期.而实际上BeanFactory也是差不多的,只不过处理器需要手动注册. 转载请注明地址 http://www.cnblogs.com/zrtqsk/p/3735273.html,谢谢. 一.生命周期流程图: Spri…
Servlet生命周期 init()初始化阶段 Servlet容器加载Servlet(web.xml中有load-on-startup=1;Servlet容器启动后用户首次向Servlet发请求;Servlet类文件被更新后重新装载) Servlet容器创建一个Servlet实例并调用init()方法 service()处理客户端请求阶段 客户发送请求 Servlet产生一个新的线程 Servlet创建特定于请求的ServletRequest, ServletResponse 调用service…
Spring容器: 在基于Spring的应用中,你的应用对象生存于Spring容器(container)中,Spring容器负责创建对象,装配它们,配置它们并管理它们的整个生命周期,从生存到死亡.(在这里,可能就是从new()到finalize()). 容器是Spring框架的核心.Spring容器使用DI(依赖注入)管理构成应用的组件,它会创建相互协作的组件之间的关联.毫无疑问,这些对象更简单干净,更易于理解,更易于重用并且更易于进行单元测试. 1.使用应用上下文 Spring自带了多种类型的…
1.Spring Bean的生命周期? (1)构造方法实例化bean. (2)构造方法设置对象属性. (3)是否实现aware接口,三种接口(BeanNameAware,BeanFactoryAware,ApplicationContextAware),传递的是不同的实例注入给bean. (4)初始化init,使用bean. (5)结束时,销毁destroy方法. 2.Spring MVC的工作流程? (1)发起请求到前端控制器disPatchServelet. (2) disPatchServ…
首先入口选定在org.springframework.beans.factory.support.DefaultListableBeanFactory#preInstantiateSingletons这个方法中 public void preInstantiateSingletons() throws BeansException { if (logger.isTraceEnabled()) { logger.trace("Pre-instantiating singletons in &quo…
Bean的生成过程 主要流程图 1. 生成BeanDefinition Spring启动的时候会进行扫描,会先调用org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider#scanCandidateComponents(String basePackage) 扫描某个包路径,并得到BeanDefinition的Set集合. 关于Spring启动流程,后续会单独的课详细讲,这里先讲一下Spr…