返回顶部
首页 > 资讯 > 后端开发 > Python >Spring源码解析之BeanPostProcessor知识总结
  • 695
分享到

Spring源码解析之BeanPostProcessor知识总结

2024-04-02 19:04:59 695人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

一、简介 BeanPostProcessor是spring ioc容器给我们提供的一个扩展接口。 实例化Bean做前置处理、后置处理 二、接口定义 @Component publ

一、简介

BeanPostProcessor是spring ioc容器给我们提供的一个扩展接口。

实例化Bean做前置处理、后置处理

二、接口定义


@Component
public class BeanPost  implements BeanPostProcessor {
   
    @Override
    public  Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("初始化前"+beanName);
        return bean;
    }
    
    @Override
    public  Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("初始化后"+beanName);
        return bean;
    }
}

运行顺序

实例化bean对象->设置对象属性->检查Aware接口设置依赖

->BeanPostProcessor前置处理->检查是否是initializingBean以决定是否调用afterPropertiesSet方法->检查是否配置自定义init-method->BeanPostProcessor后置处理->注册必要的Destruction相关回调接口->。。。->是否实现DisposableBean接口->是否配置自定义destroy方法

三、源码

1.由AnnotationConfigApplicationContext进入

2.进入构造方法的refresh方法

3.进入到finishBeanFactoryInitialization方法

4.进入preInstantiateSingletons方法

5.执行getBean实例化方法

6创建bean实例

7.doCreateBean

8.进入初始化接口

9.可以看到执行到了BeanPostProcessor 提供的2个方法

进入内部可以看到

10.然后继续往下走开始AWare流程

内部:

11.进入invokeAwareInterfaces(bean);方法

内部:

当前bean实现了ApplicationContextAware接口

12.走到Person类中的setApplicationContext方法

一入源码深似海,苦海无边,回头是岸

到此这篇关于Spring源码解析之BeanPostProcessor知识总结的文章就介绍到这了,更多相关BeanPostProcessor的使用内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Spring源码解析之BeanPostProcessor知识总结

本文链接: https://lsjlt.com/news/127943.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Spring源码解析之BeanPostProcessor知识总结
    一、简介 BeanPostProcessor是Spring IOC容器给我们提供的一个扩展接口。 实例化Bean做前置处理、后置处理 二、接口定义 @Component publ...
    99+
    2024-04-02
  • Spring Cache相关知识总结
    简介  Spring 从 3.1 开始定义了 org.springframework.cache.Cache 和 org.springframework.cache.Cac...
    99+
    2024-04-02
  • BUUCTF 之 代码审计知识点总结
    [HCTF 2018]WarmUp isset($a)判断a是否声明(有值) is_string($b)判断b是否是字符串 in_array($c,$d)判断c是否在b数组里有。 mb_subst&#...
    99+
    2023-09-07
    php 安全 web安全
  • Spring扩展接口知识总结
    目录一、BeanPostProcessor二、BeanFactoryPostProcessor三、InitialingBean和DisposableBean四、FactoryBean...
    99+
    2024-04-02
  • Spring源码解析之Configuration
    目录一、@Configuration1.1 未加@Configuration1.2 加上@Configuration1.3 Cglib动态代理二、源码跟踪2.1 Annotation...
    99+
    2024-04-02
  • Spring源码解析后置处理器梳理总结
    目录前言1、InstantiationAwareBeanPostProcessor的postProcessBeforeInstantiation()方法2、SmartInstanti...
    99+
    2024-04-02
  • JAVA核心知识之ConcurrentHashMap源码分析
    1 前言 ConcurrentHashMap是基于Hash表的Map接口实现,键与值均不允许为NULL,他是一个线程安全的Map。同时他也是一个无序的Map,不同时间进行遍历可能会得...
    99+
    2024-04-02
  • Spring-data-redis操作redis知识总结
    什么是spring-data-redisspring-data-redis是spring-data模块的一部分,专门用来支持在spring管理项目对redis的操作,使用java操作redis最常用的是使用jedis,但并不是只有jedis...
    99+
    2023-05-31
    spring data redis
  • java基础之String知识总结
    目录一、概念二、特点三、三种构造方式:四、字符串常量池一、概念 String代表字符串,java语言中所有双引号的字符串都是String的对象,不管是否是new出来的对象。 二、特点...
    99+
    2024-04-02
  • 【源码篇】安卓源码解析(持续总结)
    前言 在Linux中,一切皆为文件。安卓底层也是基于Linux开发的。 在我们了解源码目录的时候,我们要先知道这些源码的后缀名代表的是什么文件,什么意思,才能更好的去了解其中的原理。 文章目录...
    99+
    2023-10-25
    android
  • Spring中的事务控制知识总结
    目录一、环境准备二、基于 XML 的事务控制三、基于注解的事务控制一、环境准备 为了演示 Spring 中的事务控制,我们创建一个空项目,项目目录如下: 导入依赖: <d...
    99+
    2024-04-02
  • java基础之字符串编码知识点总结
    目录一、为什么要编码二、如何“翻译”三、Java 中需要编码的场景3.1 I/O 操作中存在的编码3.2 内存中操作中的编码四、Java 中如何编解码4.1 按照 ISO-8859-...
    99+
    2024-04-02
  • Spring5学习之基础知识总结
    目录1.概述2.入门Demo3.源码1.概述 1、Spring 是轻量级的开源的 JavaEE 框架 2、 Spring 可以解决企业应用开发的复杂性 3、Spring 有两个核心部...
    99+
    2024-04-02
  • SpringCloud微服务之Config知识总结
    目录一、什么是Spring Cloud Config?二、搭建GIT环境三、服务端示例四、客户端示例五、安全认证示例六、集群搭建示例一、什么是Spring Cloud Config?...
    99+
    2024-04-02
  • Java基础知识总结之继承
    目录一、继承的基本概念二、继承的好处和弊端三、继承中变量访问的特点四、super关键字五、继承中构造方法的访问特点六、继承中成员方法的访问特点七、方法重写八、包九、修饰符十、stat...
    99+
    2024-04-02
  • Python网络编程之ZeroMQ知识总结
    一、ZeroMQ概述  ZeroMQ(又名ØMQ,MQ,或zmq)像一个可嵌入的网络库,但其作用就像一个并发框架。 ZeroMQ类似于标准Berkeley套接字,其提供了各种...
    99+
    2022-06-02
    Python ZeroMQ知识总结 python网络编程 Python ZeroMQ
  • Python基础之logging模块知识总结
    目录前言一、日志级别二、basicConfig三、日志写文件四、traceback记录前言 logging模块是Python内置的标准模块,主要用于输出脚本运行日志,可以设置输出日志的等级、日志保存路径等。 ...
    99+
    2022-06-02
    Python logging模块 python常用模块
  • java基础之泛型知识点总结
    目录一、什么是泛型?为什么要使用泛型? 二、泛型的特性是什么?三、泛型的使用方式 四、Java中的泛型通配符一、什么是泛型?为什么要使用泛型? 泛型,即“参数化...
    99+
    2024-04-02
  • Python基础之元编程知识总结
    目录一、前言二、ImportTime vs RunTime三、元类四、装饰器五、对数据的抽象–描述符六、控制子类的创建——代替元类的方法一、前言 首先说,Python中一切皆对象,老...
    99+
    2024-04-02
  • Java基础之位运算知识总结
    目录一、位运算的分类与展现效果二、原理三、边界值测试一、位运算的分类与展现效果 java位运算可以分为左移和右移,其中右移还有无符号右移。   java只对整型位移,可...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作