BeanDefinitionRegistryPostProcessor实现了BeanFactoryPostProcessor。该接口的功能就是就是向BeanFactory中注册BeanDefinition

该接口只定义了一个方法-postProcessBeanDefinitionRegistry,通过该方法可以向IoC容器中注册Be-anDefinition。

其最重要的实现便是ConfigurationClassPostProcessor,由该类完成用户在@ComponentScan注解中指定的类路径下的Class文件转变为IoC容器中的BeanDefinition。

代码

import org.springframework.beans.BeansException;
import org.springframework.beans.MutablePropertyValues;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.support.*;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class CustomizedBeanDefinitionRegistryPostProcessorimplements BeanDefinitionRegistryPostProcessor {@Overridepublic void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry)throws BeansException {// 借助于BeanDefinitionBuilder工具类来创建BeanDefinitionAbstractBeanDefinition beanDefinition =BeanDefinitionBuilder.genericBeanDefinition(User.class).getBeanDefinition();// 设置Bean的属性元数据。// 方法 public MutablePropertyValues add(String propertyName, @Nullable Object propertyValue)// propertyName 为 属性名 propertyValue 为属性值MutablePropertyValues pvs = new MutablePropertyValues();pvs.add("name", "君战");pvs.add("age",22);beanDefinition.setPropertyValues(pvs);BeanDefinitionReaderUtils.registerWithGeneratedName(beanDefinition,registry);}@Overridepublic void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)throws BeansException {}class User {private String name;private Integer age;public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}@Overridepublic String toString() {return "User{" + "name='" + name + '\'' + ", age=" + age + '}';}}public static void main(String[] args) {AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();context.register(CustomizedBeanDefinitionRegistryPostProcessor.class);context.refresh();User user = context.getBean(User.class);System.out.println(user);}
}

运行结果:

BeanDefinitionRegistryPostProcessor是什么?相关推荐

  1. Spring BeanDefinitionRegistryPostProcessor BeanPostProcessor作用

    写博客,写博客,把自己知道的小知识点全部记录,? BeanDefinitionRegistryPostProcessor 接口属于Beanddefination  装配定义的范畴,此时bean 并没有 ...

  2. Spring(24)——自定义BeanDefinitionRegistryPostProcessor

    24 自定义BeanDefinitionRegistryPostProcessor BeanDefinitionRegistryPostProcessor继承自BeanFactoryPostProce ...

  3. BeanDefinitionRegistryPostProcessor​ 的处理源码流程

    执行时机:所有的bean定义信息将要被加载到容器中,Bean实例还没有被初始化. @Component public class LeonBeanDefinationRegisterPostProce ...

  4. Spring : BeanFactoryPostProcessor 子类 BeanDefinitionRegistryPostProcessor

    1.美图 2.概述 BeanDefinitionRegistryPostProcessor继承自BeanFactoryPostProcessor,是一种比较特殊的BeanFactoryPostProc ...

  5. spring成神之路第二十九篇:BeanFactory 扩展(BeanFactoryPostProcessor、BeanDefinitionRegistryPostProcessor)...

    Spring中有2个非常重要的接口:BeanFactoryPostProcessor和BeanDefinitionRegistryPostProcessor,这2个接口面试中也会经常问到,本文我们一起 ...

  6. Spring各种PostProcessor : BeanDefinitionRegistryPostProcessor

    概述 顾名思义,BeanDefinitionRegistryPostProcessor定义了关于BeanDefinitionRegistry 的 PostProcessor .这里的BeanDefin ...

  7. Spring - BeanDefinitionRegistryPostProcessor 扩展接口 动态注册bean

    文章目录 Pre org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor 接口的继承关系 BeanD ...

  8. 0、Spring 注解驱动开发

    0.Spring注解驱动开发 0.1 简介 <Spring注解驱动开发>是一套帮助我们深入了解Spring原理机制的教程: 现今SpringBoot.SpringCloud技术非常火热,作 ...

  9. 将Bean放入Spring容器中的五种方式

    欢迎关注方志朋的博客,回复"666"获面试宝典 来源:blog.csdn.net/weixin_43741092/ article/details/120176466 将bean放 ...

  10. 惊呆了,Spring中竟然有12种定义bean的方法

    前言 在庞大的 Java 技术体系中,Spring 有着举足轻重的地位,它给每位开发者带来了极大的便利和惊喜. 我们都知道 Spring 是创建和管理bean的工厂,它提供了多种方式定义 bean,能 ...

最新文章

  1. colab中的变量怎么读取_Fizyr Retinanet在Colab中进行目标检测
  2. 圣诞节玩购目的地大比拼
  3. Spring Cloud【使用jenkins持续部署】Gogs+jenkins+Docker Swarm+Protainer
  4. 最近很火的百度MIP之 zblog改造
  5. 抖音快手小视频推荐算法之--协同过滤算法剖析
  6. AD RMS 问题解决 事件ID:139
  7. 一个分页的java工具类,可以参考
  8. “10亿元身价”CEO的6个密码
  9. ar机房查看html5,探秘5G“智慧机房”:5G+AR技术实现机房智能巡检
  10. 在线文件管理html,KODExplorer可道云-开源Web在线文件管理系统
  11. 【转载】用Pwnage + Redsnow 制作完美越狱固件
  12. 最新微博图片相册批量下载工具
  13. 手机关机的java代码_Android关机界面代码
  14. JQuery——相关练习
  15. 以儒始,以道终:九十年代新武侠电影观
  16. 五一就要到了,我用Python制作一款钉钉低价机票提示器!
  17. 科研论文翻译软件|无广告|强力推荐
  18. linux系统电视播放格式,OpenPCTV--支持电视的 Linux
  19. 饥荒联机版修改在线模式
  20. 互联网中常见的实名认证方式有哪几种?

热门文章

  1. button html ios,iOS实现UIButton图标和文字上下布局
  2. 深度学习经典论文翻译合集Deep Learning Papers Translation(CV)
  3. 算法导论的道与术、工程师思维奠定能走多远
  4. 算法:单词匹配290. Word Pattern
  5. lsd 特征点匹配代码_openCV-特征点匹配算法介绍一:理解特征
  6. 470.用Rand7()实现Rand10()
  7. linux全局查找-find,locate,whereis,which,type区别
  8. 深度学习笔记(四):循环神经网络的概念,结构和代码注释
  9. 【2016-2017 ACM-ICPC (ECNA 2016) F】Removal Game【区间DP】
  10. 2016-05-25 margin-right jsp获取页面流变量 文字颜色