当我们有一个Spring托管的应用程序时,我们想让Spring管理所有的bean。 除了使用已知解决方案(例如带注释的bean,Java配置和XML配置)创建bean的常规方法之外,还有一种方法可以用来创建自己的BeanDefinition

使用BeanDefinitionRegistryPostProcessor可以创建一个特定的后处理器,该处理器可以将BeanDefinition添加到BeanDefinitionRegistry

它不同于BeanPostProcessor ,其中只有挂钩豆初始化(建设你的POJO的),其中BeanDefinitionRegistryPostProcessor对钩BeanDefinitionRegistry 。 这使我们能够定义自己的BeanDefinition

首先,我们创建示例中列出的BeanDefinitionRegistryPostProcessor实现。 我们实现了所需的方法,并将能够将我们自己的bean定义添加到注册表中。 定义的BeanDefinition将由ApplicationContext拾取,并将构造POJO。 我们的结果是一个Spring托管的bean

package com.jdriven;import org.springframework.beans.BeansException;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor;
import org.springframework.beans.factory.support.RootBeanDefinition;
import org.springframework.stereotype.Component;@Component
public class LogicServiceRegistryPostProcessor implements BeanDefinitionRegistryPostProcessor {@Overridepublic void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry)throws BeansException {RootBeanDefinition beanDefinition = new RootBeanDefinition(MyServiceImpl.class); //The service implementationserviceDefinition.setTargetType(MyService.class); //The service interfaceserviceDefinition.setRole(BeanDefinition.ROLE_APPLICATION);registry.registerBeanDefinition("myBeanName", beanDefinition );}
}

翻译自: https://www.javacodegeeks.com/2015/04/spicy-spring-dynamically-create-your-own-beandefinition.html

Spicy Spring:动态创建自己的BeanDefinition相关推荐

  1. spicy命令_Spicy Spring:动态创建自己的BeanDefinition

    spicy命令 当我们拥有Spring托管的应用程序时,我们想让Spring管理所有的bean. 除了使用已知解决方案(例如带注释的bean,Java配置和XML配置)创建bean的常规方法之外,还有 ...

  2. java动态创建bean的意义_java相关:Spring Boot如何动态创建Bean示例代码

    java相关:Spring Boot如何动态创建Bean示例代码 发布于 2020-3-20| 复制链接 摘记: 前言本文主要给大家介绍了关于Spring Boot动态创建Bean的相关内容,分享出来 ...

  3. 【Spring源码三千问】Spring动态代理:什么时候使用的 cglib,什么时候使用的是 jdk proxy?

    Spring动态代理:什么时候使用的 cglib,什么时候使用的是 jdk proxy? 前言 版本约定 正文 例子测试 结论分析 proxyTargetClass 标识的校正 哪些接口不是 Reas ...

  4. spring bean创建过程源码分析(上)

    大家好,我是@zzyang(小卓),一个热爱技术的90后.这篇文章主要是带大家了解一下spring bean的生命周期,对spring bean的创建过程源码分析.由于篇幅有限,这里说的都是主干流程, ...

  5. SpringBoot根据配置文件动态创建Bean

    需求场景: 如果现在需要实现一个这样的需求: 根据配置信息动态控制是否创建任意Bean 通常我们会定义这样的配置: application.yml: 实现业务需求:根据enbaled控制下面bean- ...

  6. SpringBoot集成Quartz实现定时任务的动态创建、启动、暂停、恢复、删除。

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 作者:毅大师 blog.csdn.net/qq_39648 ...

  7. Spring注解创建Bean的几种方式

    Spring注解创建Bean的几种方式 1.@Component系列 @Component @Service @Repository @Controller @Configuration 2. 依附于 ...

  8. Spring 的创建流程

    1.Spring所管理的Bean实际上是缓存在一个ConcurrentHashMap中的(singletonObjects对象中): 2.该对象本质上是一个key-value对的形式,key指的是be ...

  9. spring创建web项目_使用Spring WS创建合同优先的Web服务

    spring创建web项目 1引言 本文介绍了如何使用来实现和测试SOAP Web服务 Spring Web Services项目 . 本示例将JAXB2用于(取消)编组. 为了开发服务,我将使用合同 ...

最新文章

  1. html+spring boot简单的ajax数据传输实现
  2. Android如何使用读写cookie的方法
  3. 分布式锁的使用与注意事项
  4. 快讯 | 首期“医工结合系列研讨会”汇聚清华力量,共促医工融合发展
  5. 《Head First Python》笔记 第四章 持久存储
  6. Android之上下文菜单创建
  7. java web 过滤器跟拦截器的区别和使用
  8. iOS开发UI篇—UITableviewcell的性能优化和缓存机制
  9. c语言数据结构线性表LA和LB,数据结构(C语言版)设有线性表LA(3,5,8,110)和LB(2,6,8,9,11,15,20)求新集合?...
  10. OpenCV形态morphology的实例(附完整代码)
  11. selenium自动化测试、Python单元测试unittest框架以及测试报告和日志输出
  12. 安徽理工大学计算机学院蒋群,计算机学院2001级校友十周年聚会
  13. JQ css3 导航栏到底部上移
  14. hadoop php mysql_PHP+Hadoop+Hive+Thrift+Mysql实现数据统计分析
  15. 全国Python科研应用专题实操培训班
  16. Selenium入门(自动右键保存图片到本机上)
  17. asp木马伪装成图片或其它,上传漏洞终极解决方法
  18. web漏洞扫描器-awvs
  19. c语言水仙花数算法流程图,C语言经典算法例题求100-999之间的“水仙花数
  20. iOS — 百度地图 使用

热门文章

  1. 循环输入某同学 S1 结业考试的 5 门课成绩,并计算平均分
  2. 公共计算机课程思政建设实施方案,公共计算机教研组开设课程思政公开课
  3. 检测窥屏_开挂、狙击、窥屏?乱象丛生的炉石狂野天梯,到底怎么了?
  4. 关闭(杀死)8080端口
  5. 服务器 ha linux,Linux 高可用(HA)集群之Heartbeat详解
  6. php打印 二维数组,PHP中遍历二维数组_以不同形式的输出操作实例
  7. vue 字典_【开源】基于Vue的前端组件库HeyUI
  8. Comparable and Comparator API
  9. camel apache_如何使用Apache Camel,Quarkus和GraalVM快速运行100个骆驼
  10. graal java_如何在CircleCI上构建支持Graal的JDK8?