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常用接口的载入)相关推荐

  1. SpringBoot:Bean生命周期介绍

    SpringBoot:Bean生命周期介绍 前言 一.Bean 的生命周期介绍 二.具体操作顺序 前言 Bean 是 SpringBoot 中一个非常重要的组成部分,是面试中经常会问到的一个问题. 本 ...

  2. spring bean生命周期_Spring中bean的生命周期和扩展点有哪些?

    前言 今天和大家分享一下Spring中Bean的生命周期的一些知识.先来说一下什么是生命周期吧,生命周期从其语义上理解就是一个对象从产生到销毁的整个过程,之所以把这个过程称为生命周期是因为其就像一个生 ...

  3. Spring IOC 容器启动、Bean生命周期详解

    前言 在Spring IOC 和 AOP 概览中,简要介绍了IOC容器和AOP,没有深入IOC容器Bean的实例化,此文承接上文深入分析Bean的实例化过程.生命周期. Spring IOC的过程 S ...

  4. spring生命周期七个过程_Spring杂文(三)Spring循环引用

    众所周知spring在默认单例的情况下是支持循环引用的 Appconfig.java类的代码 @Configurable @ComponentScan("com.sadow") p ...

  5. JavaEE互联网轻量级框架整合开发(书籍)阅读笔记(6):Spring IOC容器学习(概念、作用、Bean生命周期)...

    一.IOC控制反转概念 控制反转(IOC)是一种通过描述(在Java中可以是XML或者是注解)并通过第三方去生产或获取特定对象的方式. 主动创建模式,责任在于开发者,而在被动模式下,责任归于Ioc容器 ...

  6. Spring bean生命周期概览

    springBean的生命周期描述了交由spring管理的bean从创建,属性赋值,代理扩展,销毁的过程.在不同的阶段spring都提供了相应的接口提供扩展. Spring生命周期 各个接口与方法调用 ...

  7. 【spring学习】Spring bean生命周期及注解

    Spring Spring是分层的javaSE/EE轻量级开源框架,以IOC(控制翻转)和AOP(面向切面编程)为内核 分层:web层:SpringMvc持久层:JDBC Template业务层:Sp ...

  8. spring一: 容器以及bean生命周期

    spring框架的几个优点: 1. 轻量级  2. 针对接口编程,解耦合   3. aop编程   4. 方便集成各种优秀框架  5.非侵入式   6.容器 IOC(Inversion of Cont ...

  9. 【Spring】- Bean生命周期

    2019独角兽企业重金招聘Python工程师标准>>> Spring Bean的生命周期: bean对象实例化 属性注入 beanfactory ApplicationContext ...

最新文章

  1. iOS宏定义的使用与规范
  2. WCF分布式开发步步为赢(1):WCF分布式框架基础概念
  3. 5.30 Tree Traversal + Tree manipulation
  4. css 透明_css属性transparent有时候并不是透明的
  5. C++ 字符数组函数与string函数
  6. windows设置右键sublime Text3
  7. linux提取声卡的codec教程,发个菜鸟提取声卡codec文件图文教程,老手就别看了,小心被骂!...
  8. 分布式系统:数据库、操作系统、集群、协调、接口、多处理器、共享、I/O
  9. 数据库设计中char与varchar类型的区别
  10. 2019年第五届计蒜之道复赛总结
  11. php测试时自动下载什么情况,新手使用PHPCUSTOM打开php文件变下载的原因分析
  12. java 实现QQ自动登录(带验证码)
  13. 数字电路逻辑设计_第三版_微课版_第四章思考题与练习题(附答案)
  14. World Wind Java 系列
  15. 图片复印如何去除黑底_手机拍的文字图片,打印出来都是灰底黑字,怎样才能变成白底黑字?...
  16. 图像特征与描述子(直方图, 聚类, 边缘检测, 兴趣点/关键点, Harris角点, 斑点(Blob), SIFI, 纹理特征)...
  17. 浏览器打印不出div背景颜色
  18. 唐朝疆域地图[中亚势力范围(公元660年
  19. 提取文件夹中图片名字
  20. 功能强大、多合一,Java性能调优VisualVM多合一工具

热门文章

  1. 解放双手!推荐一款阿里开源的低代码工具,YYDS!
  2. Java 中接口和抽象类竟然有 7 点不同?
  3. JVM(二)Java虚拟机组成详解
  4. 计算机操作系统原理教程与实训(目录)
  5. Linux(CentOS 7)安装docker
  6. C#中IEnumerableT.Join()和IEnumerableT.GroupJoin()简单使用
  7. 阶乘取模算法java_np问题(大数阶乘取模)
  8. linux桌面版自动更新关闭了,桌面应用|开启 Ubuntu 系统自动升级
  9. redis启动没反应_Promethues如何针对Redis进行监控
  10. 计算机网络运输层的概述,计算机网络_运输层