spring中自定义Bean的性质
spring框架提供了接口来自定义Bean的性质,包含
- 生命周期回调
- ApplicationContextAware和BeanNameAware
- 其它Aware接口
1、生命周期回调
1.1 初始化回调
实现InitializingBean接口。
不推荐使用,因为存在耦合。建议使用@PostConstruct注解或者基于xml时使用init-method属性指定初始化方法
1.2 销毁回调
实现DisposableBean接口。
推荐使用@PreDestroy或者xml配置时的destroy-method属性来指定
1.3 默认的初始和销毁方法
使用default-init-method属性来指定将bean的方法名默认为初始化方法
使用default-destroy-method属性来指定将bean的方法名默认为销毁方法
1.4 组合生命周期机制
在同时有InitializingBean、DisposableBean、init()和destroy()方法和@PostConstruct、@PreDestroy时。
初始化时调用顺序为
@PostConstruct->InitializingBean->init()
销毁时调用顺序为@PreDestroy->DisposableBean->destroy()
1.5 启动和关闭回调
实例Lifecycle、LifecycleProcessor或者SmartLifecycle接口。
在AbstractApplicationContext的refresh()方法中会调用finishFresh来调用启动的回调
1.6 优雅关闭spring ioc容器
通过调用registerShutdownHook(ConfigurableApplicationContext接口有定义)来注册关闭钩子
2、ApplicationContextAware和BeanNameAware
AppicationContextAware通过ApplicationContextAwareProcessor来处理,在AbstractAppicationContext的prepareBeanFactory加入的。其主要处理EnvironmentAware、EmbeddedValueResolverAware、ResourceLoaderAware、ApplicationEventPublisherAware、MessageSourceAware、ApplicationStartupAware和ApplicationContextAware。其处理是在CommonAnnotationPostProcessor之后
BeanNameAware是在AbstractAutowireCapableBeanFactory中的initializeBean来处理的,会处理BeanNameAware、BeanClassLoaderAware和BeanFactoryAware,其是在@PostConstruct之前处理。
spring中自定义Bean的性质相关推荐
- Spring官方文档解读(五)之自定义 bean 的性质
Spring 框架提供了许多接口,可用于自定义 Bean 的性质.本节将它们分组如下: Lifecycle Callbacks ApplicationContextAware 和 BeanNameAw ...
- java 自定义xml_6.1 如何在spring中自定义xml标签
dubbo自定义了很多xml标签,例如,那么这些自定义标签是怎么与spring结合起来的呢?我们先看一个简单的例子. 一 编写模型类 1 packagecom.hulk.testdubbo.model ...
- 详细讲解Spring中的@Bean注解
点击关注公众号,实用技术文章及时了解 来源:blog.csdn.net/weixin_42140261/ article/details/104864333 随着SpringBoot的流行,我们现在更 ...
- Spring 中的bean 是线程安全的吗?
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 作者:myseries cnblogs.com/myser ...
- Spring中的Bean配置、属性配置、装配内容详细叙述
文章目录 1.Bean的配置 1.1.配置方式 2.Bean的实例化 2.1.构造器实例化 2.2.静态工厂方式实例化 2.3.实例工厂方式实例化 3.Bean的作用域 3.1.作用域的种类 4.Be ...
- java spring源码_spring源码分析-spring中的bean
接触过spring的人都知道,在spring中我们称java对象为bean,我们在spring的debug日志或者报错日志也能看到各种bean的描述.其实,spring的bean和java的对象之间是 ...
- spring扩展点之二:spring中关于bean初始化、销毁等使用汇总,ApplicationContextAware将ApplicationContext注入...
<spring扩展点之二:spring中关于bean初始化.销毁等使用汇总,ApplicationContextAware将ApplicationContext注入> <spring ...
- JSP访问Spring中的bean
JSP访问Spring中的bean <%@page import="com.sai.comment.po.TSdComment"%> <%@page import ...
- Spring中的Bean是如何被回收的?
1.架构师系列内容:架构师学习笔记(持续更新) 答:这需要看Spring中的bean的生命周期 spring中的生命周期有比如:singleton,prototype,session,request- ...
最新文章
- 2018年机器视觉前景预测
- python 美团api接口对接_python实现比对美团接口返回数据和本地mongo数据是否一致示例...
- mac里面如何复制路径
- Java按照时间顺序从hbase中读出数据
- kmeans中的k的含义_聚类的Python实现(二):确定分群数K
- python自动化测试-Python自动化测试如何自动生成测试用例?
- Flask项目基本流程
- 面试阿里,你必须知道的背景知识——双非上岸阿里巴巴系列
- 用“江湖兵器排行榜”前10的语言输出hello world,你会几种?顺便拜拜祖师爷!
- win7怎样修改文件后缀名
- 简易歌曲推荐网页制作
- 高通平台DDR3初始化
- 对指定网站渗透的一些总结
- 安卓Android的手机微博平台设计与开发
- 深度学习神经网络画图软件汇总
- 服务器中病毒要不要重装系统,五种情况必须要给电脑重装系统,这三种不用重做系统,别被骗了!...
- 如何使用MATLAB将两张或者多张figure图形合并到一个figure图形里进行对比
- 移动数据和软件更新系统及方法
- python如何制作脚本_用python给自己做一款小说阅读器过程详解
- 12-Go语言接口interface
热门文章
- 广播与P2P通道(下) -- 方案实现
- BZOJ 1013: [JSOI2008]球形空间产生器sphere 高斯消元
- 神奇的HTML5离线存储(应用程序缓存)
- SQL Server中Rollup关键字使用技巧 (转)
- php如何设定隐藏四位号码,PHP问题:php手机号码中间四位如何隐藏?
- python精彩编程200例pdf下载-最经典的25本Python编程开发电子书(附下载地址)!...
- python手机版下载3.7.2-QPython - Python for Android
- python有道翻译-Python调用有道词典翻译
- python3.7.2安装-ubuntu下编译安装Python3.7.2
- python中是干嘛的-python是做什么的,新手必看哦!