文档章节

bean的生命周期

龙之天空
 龙之天空
发布于 2015/07/27 18:57
字数 426
阅读 18
收藏 0

 传统的java应用,bean的生命周期很简单。使用java关键字new进行bean实例化,然后该bean就可以被使用了。一旦
该bean不再被使用,则由java自动进行垃圾回收。
 相比之下,Spring容器中的Bean的生命周期就显得相对细腻多了。正确理解Spring Bean的生命周期非常重要,因为你
或者要利用Sping提供的扩展点点自定义Bean的创建过程。

生命周期:
 1、Spring对Bean进行实例化
 2、Sping将值和Bean的应用注入进Bean对应的属性中
 3、如果Bean实现了BeanNameAware接口,Spring将Bean的Id传递给setBeanName()接口方法
 4、如果Bean实现了BeanFactoryAware接口,Spring将调用setBeanFactory()接口方法,将BeanFactory容器实例传入
 5、如果Bean实现了ApplicationContextAware接口,Spring将调用setApplicationContext()接口方法,将应用上文的应用传入
 6、如果Bean实现了BeanPostProcessor接口,Spring将调用他们的postProcessBeforeInitiazation()接口方法
 7、如果Bean实现了InitialiingBean接口,Spring将调用他们的afterPropertiesSet()接口方法。类似的,如果Bean使用init_method声明了初始化方法,该方法也会被调用
 
 8、如果Bean实现了BeanPostProcessor接口,Spring将调用他们的PostPoressAfterInitialization()方法
 9、此时此刻,Bean已经准备就绪,可以被应用程序使用了,他们将一直驻留在应用上下文中,指导该应用上下文被销毁。
 10、如果Bean实现了DisposableBean接口,Spring将调用它的destroy()接口方法。同样,如果Bean使用destroy-method声明了销毁方法,该方法也会被调用

© 著作权归作者所有

龙之天空
粉丝 7
博文 79
码字总数 18140
作品 0
宁波
私信 提问
加载中

评论(1)

Linesh
Linesh
最近刚好在找这个问题了解,楼主可能是深入了源码去阅读研究的,很实事求是,赞,不过这种流程式的东西能画成图出来就更好了。
Spring(Lifecycle)

Jetty/Spring初始化: Jetty/Spring api: Bean生命周期之初始化: 1.容器寻找Bean的定义信息并且将其实例化。 2.容器对Bean进行依赖注入,Spring按照Bean定义信息配置Bean的所有属性。 3.如果B...

赵-猛
2017/04/11
0
0
spring bean生命周期

Spring作为当前Java最流行、最强大的轻量级框架,受到了程序员的热烈欢迎。准确的了解Spring Bean的生命周期是非常必要的。我们通常使用ApplicationContext作为Spring容器。这里,我们讲的也...

newworld2010
2016/10/08
24
0
Spring BeanFactory 生命周期

首先放一张图: 说明: 1.对于spring的BeanFactory生命周期.我们可以根据bean的创建来定制化实现我们需要的功能. 容器后处理器定制化使用方法: 整理一下: bean生命周期接口有: BeanNameAware, ...

最爱肉肉
04/12
0
0
Spring Boot Bean生命周期

注:Spring Boot Bean的生命周期,什么是Bean的生命周期,就是Bean从创建到销毁的过程。 Bean的生命周期过程描述 我们先看一下Bean的生命周期过程中都会经历些什么,我先简单解释一下,后面我...

爱编程的帅小伙
2018/07/12
0
0
Spring注解编程(二)---@Configuration&@Bean

从Spring3.0,@Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfi...

lemonLove
2018/08/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Java中print、printf、println的区别

printf主要是继承了C语言的printf的一些特性,可以进行格式化输出 print就是一般的标准输出,但是不换行 println和print基本没什么差别,就是最后会换行

hellation_
32分钟前
0
0
spring在静态类中注入bean的的解释

@Componentpublic class ModelMapper {@AutoWiredprivate static AssignmentManager assignmentManager;public static void add(){a+b;}} 静态方法是属于类的,普通方法才属于...

无知的小狼
32分钟前
2
0
分而治之-归并排序

如果有1个数组,数组的左半部分和右半部分都已经排好序,如何将该数组合成1个有序的数组? 开辟1个同样大小的临时空间辅助我们完成归并过程,如下图 k:表示归并过程中,当前需要替换的原数组...

万山红遍
47分钟前
2
0
Linux修改时区的正确方法【修改时间,需要修改软连接,靠谱】

CentOS和Ubuntu的时区文件是/etc/localtime,但是在CentOS7以后localtime以及变成了一个链接文件 [root@centos7 ~]# ll /etc/localtime lrwxrwxrwx 1 root root 33 Oct 12 11:01 /etc/loca......

Airship
今天
1
0
《Netkiller Spring Cloud 手札》之 Master / Slave 主从数据库数据源配置

5.19.1. Master / Slave 主从数据库数据源配置 5.19.1.1. application.properties spring.datasource.master.driverClassName = com.mysql.cj.jdbc.Driverspring.datasource.master.url=j......

netkiller-
今天
51
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部