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的性质相关推荐

  1. Spring官方文档解读(五)之自定义 bean 的性质

    Spring 框架提供了许多接口,可用于自定义 Bean 的性质.本节将它们分组如下: Lifecycle Callbacks ApplicationContextAware 和 BeanNameAw ...

  2. java 自定义xml_6.1 如何在spring中自定义xml标签

    dubbo自定义了很多xml标签,例如,那么这些自定义标签是怎么与spring结合起来的呢?我们先看一个简单的例子. 一 编写模型类 1 packagecom.hulk.testdubbo.model ...

  3. 详细讲解Spring中的@Bean注解

    点击关注公众号,实用技术文章及时了解 来源:blog.csdn.net/weixin_42140261/ article/details/104864333 随着SpringBoot的流行,我们现在更 ...

  4. Spring 中的bean 是线程安全的吗?

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 作者:myseries cnblogs.com/myser ...

  5. Spring中的Bean配置、属性配置、装配内容详细叙述

    文章目录 1.Bean的配置 1.1.配置方式 2.Bean的实例化 2.1.构造器实例化 2.2.静态工厂方式实例化 2.3.实例工厂方式实例化 3.Bean的作用域 3.1.作用域的种类 4.Be ...

  6. java spring源码_spring源码分析-spring中的bean

    接触过spring的人都知道,在spring中我们称java对象为bean,我们在spring的debug日志或者报错日志也能看到各种bean的描述.其实,spring的bean和java的对象之间是 ...

  7. spring扩展点之二:spring中关于bean初始化、销毁等使用汇总,ApplicationContextAware将ApplicationContext注入...

    <spring扩展点之二:spring中关于bean初始化.销毁等使用汇总,ApplicationContextAware将ApplicationContext注入> <spring ...

  8. JSP访问Spring中的bean

    JSP访问Spring中的bean <%@page import="com.sai.comment.po.TSdComment"%> <%@page import ...

  9. Spring中的Bean是如何被回收的?

    1.架构师系列内容:架构师学习笔记(持续更新) 答:这需要看Spring中的bean的生命周期 spring中的生命周期有比如:singleton,prototype,session,request- ...

最新文章

  1. 2018年机器视觉前景预测
  2. python 美团api接口对接_python实现比对美团接口返回数据和本地mongo数据是否一致示例...
  3. mac里面如何复制路径
  4. Java按照时间顺序从hbase中读出数据
  5. kmeans中的k的含义_聚类的Python实现(二):确定分群数K
  6. python自动化测试-Python自动化测试如何自动生成测试用例?
  7. Flask项目基本流程
  8. 面试阿里,你必须知道的背景知识——双非上岸阿里巴巴系列
  9. 用“江湖兵器排行榜”前10的语言输出hello world,你会几种?顺便拜拜祖师爷!
  10. win7怎样修改文件后缀名
  11. 简易歌曲推荐网页制作
  12. 高通平台DDR3初始化
  13. 对指定网站渗透的一些总结
  14. 安卓Android的手机微博平台设计与开发
  15. 深度学习神经网络画图软件汇总
  16. 服务器中病毒要不要重装系统,五种情况必须要给电脑重装系统,这三种不用重做系统,别被骗了!...
  17. 如何使用MATLAB将两张或者多张figure图形合并到一个figure图形里进行对比
  18. 移动数据和软件更新系统及方法
  19. python如何制作脚本_用python给自己做一款小说阅读器过程详解
  20. 12-Go语言接口interface

热门文章

  1. 广播与P2P通道(下) -- 方案实现
  2. BZOJ 1013: [JSOI2008]球形空间产生器sphere 高斯消元
  3. 神奇的HTML5离线存储(应用程序缓存)
  4. SQL Server中Rollup关键字使用技巧 (转)
  5. php如何设定隐藏四位号码,PHP问题:php手机号码中间四位如何隐藏?
  6. python精彩编程200例pdf下载-最经典的25本Python编程开发电子书(附下载地址)!...
  7. python手机版下载3.7.2-QPython - Python for Android
  8. python有道翻译-Python调用有道词典翻译
  9. python3.7.2安装-ubuntu下编译安装Python3.7.2
  10. python中是干嘛的-python是做什么的,新手必看哦!