springbean的生命周期_spring bean生命周期(涵盖spring常用接口的载入)
spring bean生命周期流程图:
其中包含了很多常用的接口,可以参考spring 常用接口;
下面写个例子证明下:
1.实现InitializingBean以及各个Aware接口
public class UserB implements InitializingBean , BeanFactoryAware , BeanNameAware, BeanClassLoaderAware , ApplicationContextAware, EnvironmentAware, ResourceLoaderAware, MessageSourceAware { private String name; private int age; private UserA usera; @Autowired public void setUsera(UserA usera) { this.usera = usera; System.out.println("====UserB属性注入usera"+usera); } public UserB() { System.out.println("====构造userB"); } public String getName() { return "程序猿"; } public int getAge() { return 19; } public void function(){ System.out.println("====userB"+usera.getName()); } @Override public String toString() { return "UserB{" + "name='" + getName() + ''' + ", age=" + getAge() + ", usera=" + usera + '}'; } @Override public void afterPropertiesSet() throws Exception { System.out.println("UserB===InitializingBean-afterPropertiesSet"); } @Override public void setBeanFactory(BeanFactory beanFactory) throws BeansException { System.out.println("=====UserB:setBeanFactory"); } @Override public void setBeanClassLoader(ClassLoader classLoader) { System.out.println("=====UserB:setBeanClassLoader"); } @Override public void setBeanName(String name) { System.out.println("=====UserB:setBeanName"); } @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { System.out.println("=====UserB:setApplicationContext"); } @Override public void setEnvironment(Environment environment) { System.out.println("=====UserB:setEnvironment"); } @Override public void setMessageSource(MessageSource messageSource) { System.out.println("=====UserB:setMessageSource"); } @Override public void setResourceLoader(ResourceLoader resourceLoader) { System.out.println("=====UserB:setResourceLoader"); }}
2.实现BeanPostProcessor, BeanFactoryPostProcessor , InstantiationAwareBeanPostProcessor
@Componentpublic class UserPostProcessor implements BeanPostProcessor, BeanFactoryPostProcessor , BeanFactoryAware , InstantiationAwareBeanPostProcessor { BeanFactory beanFactory; @Override public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { if(beanName.contains("UserB")) { Object bean1 = beanFactory.getBean(UserB.class.getName()); System.out.println("====BeanPostProcessor-postProcessBeforeInitialization:"+bean1); } return null; } @Override public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { if(beanName.contains("UserB")) { Object bean1 = beanFactory.getBean(UserB.class.getName()); System.out.println("====BeanPostProcessor-postProcessAfterInitialization:"+bean1); } return null; } @Override public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException { BeanDefinition beanDefinition = beanFactory.getBeanDefinition(UserB.class.getName()); System.out.println("=====BeanFactoryPostProcessor-postProcessBeanFactory:"+beanDefinition); } @Override public void setBeanFactory(BeanFactory beanFactory) throws BeansException { this.beanFactory = beanFactory; } @Override public Object postProcessBeforeInstantiation(Class> beanClass, String beanName) throws BeansException { if(beanName.contains("UserB")) { System.out.println("=====InstantiationAwareBeanPostProcessor-postProcessBeforeInstantiation:" + beanName); } return null; } @Override public boolean postProcessAfterInstantiation(Object bean, String beanName) throws BeansException { if(beanName.contains("UserB")) { Object bean1 = beanFactory.getBean(UserB.class.getName()); System.out.println("=====InstantiationAwareBeanPostProcessor-postProcessAfterInstantiation" + bean1); } return true; } @Override public PropertyValues postProcessProperties(PropertyValues pvs, Object bean, String beanName) throws BeansException { if(beanName.contains("UserB")) { Object bean1 = beanFactory.getBean(UserB.class.getName()); System.out.println("=====InstantiationAwareBeanPostProcessor-postProcessProperties:" + bean1); } return null; }}
3.启动类;
@SpringBootApplication@Import({UserB.class,UserA.class})public class DemoApplication {public static void main(String[] args) {ConfigurableApplicationContext run = SpringApplication.run(DemoApplication.class, args);}}
4.运行结果:
springbean的生命周期_spring bean生命周期(涵盖spring常用接口的载入)相关推荐
- SpringBoot:Bean生命周期介绍
SpringBoot:Bean生命周期介绍 前言 一.Bean 的生命周期介绍 二.具体操作顺序 前言 Bean 是 SpringBoot 中一个非常重要的组成部分,是面试中经常会问到的一个问题. 本 ...
- spring bean生命周期_Spring中bean的生命周期和扩展点有哪些?
前言 今天和大家分享一下Spring中Bean的生命周期的一些知识.先来说一下什么是生命周期吧,生命周期从其语义上理解就是一个对象从产生到销毁的整个过程,之所以把这个过程称为生命周期是因为其就像一个生 ...
- Spring IOC 容器启动、Bean生命周期详解
前言 在Spring IOC 和 AOP 概览中,简要介绍了IOC容器和AOP,没有深入IOC容器Bean的实例化,此文承接上文深入分析Bean的实例化过程.生命周期. Spring IOC的过程 S ...
- spring生命周期七个过程_Spring杂文(三)Spring循环引用
众所周知spring在默认单例的情况下是支持循环引用的 Appconfig.java类的代码 @Configurable @ComponentScan("com.sadow") p ...
- JavaEE互联网轻量级框架整合开发(书籍)阅读笔记(6):Spring IOC容器学习(概念、作用、Bean生命周期)...
一.IOC控制反转概念 控制反转(IOC)是一种通过描述(在Java中可以是XML或者是注解)并通过第三方去生产或获取特定对象的方式. 主动创建模式,责任在于开发者,而在被动模式下,责任归于Ioc容器 ...
- Spring bean生命周期概览
springBean的生命周期描述了交由spring管理的bean从创建,属性赋值,代理扩展,销毁的过程.在不同的阶段spring都提供了相应的接口提供扩展. Spring生命周期 各个接口与方法调用 ...
- 【spring学习】Spring bean生命周期及注解
Spring Spring是分层的javaSE/EE轻量级开源框架,以IOC(控制翻转)和AOP(面向切面编程)为内核 分层:web层:SpringMvc持久层:JDBC Template业务层:Sp ...
- spring一: 容器以及bean生命周期
spring框架的几个优点: 1. 轻量级 2. 针对接口编程,解耦合 3. aop编程 4. 方便集成各种优秀框架 5.非侵入式 6.容器 IOC(Inversion of Cont ...
- 【Spring】- Bean生命周期
2019独角兽企业重金招聘Python工程师标准>>> Spring Bean的生命周期: bean对象实例化 属性注入 beanfactory ApplicationContext ...
最新文章
- iOS宏定义的使用与规范
- WCF分布式开发步步为赢(1):WCF分布式框架基础概念
- 5.30 Tree Traversal + Tree manipulation
- css 透明_css属性transparent有时候并不是透明的
- C++ 字符数组函数与string函数
- windows设置右键sublime Text3
- linux提取声卡的codec教程,发个菜鸟提取声卡codec文件图文教程,老手就别看了,小心被骂!...
- 分布式系统:数据库、操作系统、集群、协调、接口、多处理器、共享、I/O
- 数据库设计中char与varchar类型的区别
- 2019年第五届计蒜之道复赛总结
- php测试时自动下载什么情况,新手使用PHPCUSTOM打开php文件变下载的原因分析
- java 实现QQ自动登录(带验证码)
- 数字电路逻辑设计_第三版_微课版_第四章思考题与练习题(附答案)
- World Wind Java 系列
- 图片复印如何去除黑底_手机拍的文字图片,打印出来都是灰底黑字,怎样才能变成白底黑字?...
- 图像特征与描述子(直方图, 聚类, 边缘检测, 兴趣点/关键点, Harris角点, 斑点(Blob), SIFI, 纹理特征)...
- 浏览器打印不出div背景颜色
- 唐朝疆域地图[中亚势力范围(公元660年
- 提取文件夹中图片名字
- 功能强大、多合一,Java性能调优VisualVM多合一工具
热门文章
- 解放双手!推荐一款阿里开源的低代码工具,YYDS!
- Java 中接口和抽象类竟然有 7 点不同?
- JVM(二)Java虚拟机组成详解
- 计算机操作系统原理教程与实训(目录)
- Linux(CentOS 7)安装docker
- C#中IEnumerableT.Join()和IEnumerableT.GroupJoin()简单使用
- 阶乘取模算法java_np问题(大数阶乘取模)
- linux桌面版自动更新关闭了,桌面应用|开启 Ubuntu 系统自动升级
- redis启动没反应_Promethues如何针对Redis进行监控
- 计算机网络运输层的概述,计算机网络_运输层