spring BeanFactory 实现类的getBean方法

原文:http://blog.163.com/kangzye/blog/static/3681922320096625822733/

 

这个方法是返回一个对象实例根据一个id或者name,这个id 或者 name 将会在配置文件里出现如:

<bean id="abc" class="com.yourcompany.Abc"></bean>

系统会根据给出的class属性构造一个实例出来,然后强制转换:

BeanFactory factory=new XmlBeanFactory(new ClassPathResource("applicationContext.xml"));
Abc abc=(Abc)factory.getBean("abc");
但有看过这样的代码:
<bean id="bean" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces"> 
   <value>com.ascenttech.springaop.test.Bean</value> 
  </property> 
  <property name="target"> 
   <ref local="beanTarget"/> 
  </property> 
  <property name="interceptorNames"> 
   <list> 
    <value>theAdvisor</value> 
   </list> 
  </property>
</bean>
<bean id="theBeforeAdvice" class="com.ascenttech.springaop.test.TestBefore Advice"/>
<!--CLASS-->
<bean id="beanTarget" class="com.ascenttech.springaop.test.BeanImpl"/>
<!--ADVISOR-->
<!--Note: An advisor assembles pointcut and advice-->
<bean id="theAdvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor"> 
  <property name="advice"> 
   <ref local="theBeforeAdvice"/> 
  </property> 
  <property name="pattern"> 
   <value>com\.ascenttech\.springaop\.test\.Bean\.theMethod</value> 
  </property>
</bean>

Bean 为自定义接口, 以及其实现类省略未给出
Bean x = (Bean) ctx.getBean("bean");
从 配置文件可以看出 id 为 bean 的是 org.springframework.aop.framework.ProxyFactoryBean ,但却试着往 Bean 转型,从一般来看这样势必产生 ClassCastException 类型转换错误,但事实却不会出错,因为getBean 方法不是简单的有构造器构造一个对象实例,而是这样: 如果 bean 的class 继承了 spring框架中的 FactoryBean 接口,那么getBean 先构造一个 bean 中class指定的对象,然后调用这个对象的 getObject 方法,getObject 方法返回一个  Object ,这个Object 就是 getBean 实际返回的东西。

手把手教你学Simulink——基于全桥 LLC 谐振变换器的双向 DC-DC 建模与仿真 本文详细介绍了基于Simulink的双向全桥LLC谐振变换器建模与仿真方法。内容涵盖:1)LLC谐振变换器背景与双向化挑战;2)系统架构设计及关键数学推导(FHA增益分析、双向控制逻辑);3)Simulink建模步骤(功率级搭建、PWM生成、同步整流实现);4)仿真结果分析(正向/反向工作验证、ZVS特性);5)工程实践建议(增益微调、代码生成与HIL测试)。通过手把手教学,帮助读者掌握950V↔48V双向LLC变换器的完整设计流程,实现高效率能量双向流动的同时保持软开关特性,适用于储能系统、车载充电等应用 阅读详情

相关推荐

agent-browser OpenClaw 的最佳搭档

agent-browser 是专为 AI Agent 设计的浏览器自动化工具,目前被公认为 OpenClaw 的最佳配套方案。这份技术文档完整记录了其架构、协议、性能调优与常见问题处理,非常适合想让OpenClaw 真正“上手”互联网的开发者与老用户。

liu_zhiyi的博客 1781

【spring源码 4.3.7】Spring IoC源码学习:BeanFactory.getBean() 详解

文章目录前言1. getBean()2. doGetBean()2.1 AbstractAutowireCapableBeanFactory.createBean()2.1.1 doCreateBean()2.1.1.1 createBeanInstance()2.1.1.2 populateBean()2.1.1.3 initializeBean()2.1.1.3.1 Spring Bean的生命周期 前言 《Spring IoC源码学习:finishBeanFactoryInitialization()

m0_45406092的博客 876

ESP32S3电池电量监测实战:从分压电路到IDF组件配置(附GitHub源码)

本文详细介绍了ESP32S3电池电量监测的完整实战方案。从硬件分压电路的电阻选型、滤波设计,到软件层面利用ESP-IDF的ADC校准机制提升精度,并重点讲解了如何集成bat_monitor开源组件快速实现电压采集、电量计算、充电检测与事件通知。文章提供了从原理到调试的完整指南和GitHub源码,帮助开发者构建稳定可靠的物联网设备电源管理系统。

ee345的博客 530

Spring BeanFactory.getBean()流程

Spring BeanFactory.getBean() 开始 获取Class对象 1. step1: 找到合适的classloader(一般这里是以Thread.currentThread().getContextClassLoader()获得,正如《深入理解JVM虚拟机》所说这其实是一种破坏双亲加载的机制)     step2: 加载bean对应的class文件为Class对象 实

u011385186的专栏 3880

MFC 修改CheckBox的文本颜色方法

设置主题 这一步是必须的,不可省略。 BOOL CMFCApplication1Dlg::OnInitDialog() { CDialogEx::OnInitDialog(); // 设置此对话框的图标。 当应用程序主窗口不是对话框时,框架将自动 // 执行此操作 SetIcon(m_hIcon, TRUE); // 设置大图标 SetIcon(m_hIcon, FALSE); // 设置小图标 // TODO: 在此添加额外的初始化代码 // 设置主题 HWND

Kim的博客 2249

【UV打印机】RYPC打印软件教程(二)-软件界面概述

下图是控制软件的主操作界面.将喷绘机的操作规纳为四块,分别为参数设置,任务选择,打印控制,系统维护,对于日常打印而言,只需操作任务选择,打印控制。从而使汲及的操作相对较少,使得系统对普通用户而言简单易用.

Print World的专栏 3601

Spring核心之BeanFactory 一张图看懂getBean全过程.

Spring核心之BeanFactory 一张图看懂getBean全过程. Spring通过资源加载器加载相应的XML文件,使用读取器读取资源加载器中的文件到读取器中,在读取过程中,解析相应的xml文件元素,转化为spring定义的数据结BeanDefinition,把相应的BeanDefinition注册到注册表中。注册表中包含的BeanDefinition的数据结构,没有经过加工处理过,无法得到我们想要的bean对象。 我们如何得到Bean对象,spring都做了那些工作?BeanFa

zghwaicsdn的专栏 3万+

手把手教你用RTL8306MB搭建小型网络交换机:从原理到实战

本文详细介绍了如何使用RTL8306MB交换芯片从零搭建小型网络交换机的全过程。内容涵盖芯片原理分析、核心硬件电路设计(包括电源、时钟、RMII接口连接要点)、驱动开发与SMI通信实现,以及从物理链路到交换功能的系统调试实战。重点解析了将MAC5配置为RMII PHY模式与CPU对接的关键步骤和常见错误,帮助嵌入式开发者深入理解网络交换原理并完成实践。

weixin_29274969的博客 192

Spring BeanFactory getBean 源码剖析

最开始,一切都来自这里: [java] view plaincopy public static  void main(String[] args){              Resource resource=new ClassPathResource("applicationContext2.xml");           Bean

程序员小董的专栏 4433

【WRF安装(2025)】服务器移植 WRF 安装环境

【WRF安装(2025)】服务器移植 WRF 安装环境

WW、forever的博客 106

2026年最值得学习的十大 SAP 开发技术

在这辞旧迎新之际,我想和大家聊聊我心中的2026年我仍然愿意持续投入时间去学习的一些 SAP 开发技术。因为笔者水平和视野局限,加上这份清单有笔者主观兴趣爱好在内,可能大家对清单上罗列的技术有不同意见,欢迎大家在评论区发表自己的见解。下面是笔者列出的十个技术方向,排名不分先后。因为精力有限,2026年我很可能只会选择其中一两个自己最感兴趣的方向去深耕。每项技术后面都提供了链接,方便大家看完就开始学习。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1521

【细读Spring Boot源码】Spring如何获取一个Bean?BeanFactory的getBean方法

finishBeanFactoryInitialization(beanFactory); 这里包含了前置处理器和后置处理器

文文的博客 2317

OdomLaserCalibraTool标定工具的使用及踩坑记录

首先欢迎扫码关注我的微信公众号【SLAM及ROS学习笔记】 GitHub地址 GitHub - tzhangZJU/OdomLaserCalibraTool: Extrinsic Calibration of a Odom and 2d Laser 作者博客 2d Laser 和 Odomter 内外参数标定工具原理及使用方法_知行合一-优快云博客 其实只是记录了一下我自己的标定过程,和错误解决方法。其实博客和GitHub中也有提及 Error1 这个是由于.

Studying…… 1757

ApplicationContext与BeanFactory的关系——组合

本文基于Spring的 4.3.22 RELEASE 版本!!!!! 笔者之前一直认为ApplicationContext由BeanFactory派生而来,也就是说它有BeanFactory的所有功能。但是这些功能是由ApplicationContext自身实现的吗? 我们先看下我们经常用的web上下文:XmlWebApplicationContext,我们看下它对于BeanFactory的g...

Big的装逼广场 1278

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

BeanFactory和FactoryBean的区别

区别: https://liayun.blog.youkuaiyun.com/article/details/110391066 BeanFactory是个Factory,也就是IOC容器或对象工厂, 而FactoryBean就是个Bean。在Spring中,所有的Bean都是由BeanFactory(也就是IOC容器)来进行管理的。 但对FactoryBean而言,这个Bean不是简单的Bean,FactoryBean是一个能生产或者修饰对象生成的工厂Bean,它的实现与设计模式中的工厂模式和修饰器模式类似。 Fac

weixin_45723046的博客 1万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Spring IOC-BeanFactory的继承体系结构

本文主要介绍BeanFactory以及它的各种继承层级的接口、抽象类及实现类,因为内容很多,所以这里不介绍ApplicationContext继承体系下的类(虽然ApplicationContext本质上也是BeanFactory,但是毕竟这这是我们平时接触最多的两种类别,所以分开说)。 关于ApplicationContext继承体系结构在《Spring IOC-ApplicationConte...

likunpeng6656201的博客 513

BeanFactory与ApplicationContext区别

它是ApplicationContext的父接口,它才是 Spring 的核心容器, 主要的 ApplicationContext 实现都【组合】了它的功能。

qq_41349627的博客 228

实例化 Spring IoC 容器

必须创建、实例化 Spring IoC 容器,读取其配置文件来创建 Bean 实例。然后可以从 Spring IoC 容器中得到可用的 Bean 实例。Spring IoC 容器主要是基于和。

xiaotu的博客 688

FactoryBean与BeanFactory区别

BeanFactory是一个创建,管理bean的工程,是ioc最基本的规范。很多在这个基础上添加功能FactoryBean是由ioc容器创建的bean,可以和spring 依赖注入联系起来,通过getBean(String BeanName)获取到的Bean对象并不是FactoryBean的实现类对象...

大鸡腿的博客 1287

spring之BeanFactory

  spring的IOC容器能够帮我们自动new对象,对象交给spring管之后我们不用自己手动去new对象了。那么它的原理是什么呢?是怎么实现的呢?下面我来简单的模拟一下spring的机制,相信看完之后就会对spring的原理有一定的了解。   spring使用BeanFactory来实例化、配置和管理对象,但是它只是一个接口,里面有一个getBean()方法。我们一般都不直接用BeanFac...

weixin_30791095的博客 72

Spring高级之BeanFactory功能

Spring高级之BeanFactory功能

qq_61313896的博客 1707

Spring框架笔记 ——Spring容器、属性注入和构造器注入详解

Spring 容器 在 Spring IOC 容器读取 Bean 配置创建 Bean 实例之前, 必须对它进行实例化. 只有在容器实例化后, 才可以从 IOC 容器里获取 Bean 实例并使用. Spring 提供了两种类型的 IOC 容器实现. BeanFactory: IOC 容器的基本实现. ApplicationContext: 提供了更多的高级特性. 是 BeanFactory...

jxz999000的博客 284

spring4.0源码分析━━━(AbstractBeanFactory类分析)

            AbstractBeanFactory在Spring中占着重要的作用,起着一个承上启下的作用。其中最重要的就是getBean方法了,就是从IOC容器中得到Bean都是在本类启动。其类图结构如下:      这里通过讲解其中重要的几个方法了解spring中BeanFactory的实现。 getMergedLocalBeanDefinition(String ...

吾日五省我身! 447

BeanFactory 简介以及它 和FactoryBean的区别(阿里面试)

spring,beanFactory和factoryBean的区别

qq_48403611的博客 355

BeanFactory和ApplicationContent

我们shift + shift 搜索进入BeanFactory的源码然后进入BeanFactory我们要先查看他的源码呢我们ctrl + F12可以看到这个BeanFactory表面上只能getBean但是实际上控制反转,基本的依赖注入,直至Bean的生命周期的各种功能,都由他的实现类提供。这个实现类呢就是我们来看他的继承关系图ctrl alt u我们看标红的那个地方,单例对象都在哪 选择它,然后F4我们可以看到单例bean放在了map集合里边。

qq_52988841的博客 138

Spring的工厂类

1 Spring工厂类的结构图   由结构图知:ApplicationContext是继承BeanFactory的 2 BeanFactory和ApplicationContext的联系与区别 2.1 BeanFactory BeanFactory是一个老版本的工厂类,只要在调用getBean方法时,才会生成类的实例。 2.2 ApplicationContext Applica...

Keeping Ready, Keeping Coding 473

1 IOC容器设计与实现

在Spring IOC容器的设计中,可以看到两个主要的容器系列,一个是实现BeanFactory接口的简单容器系列,这系列容器只实现了容器的最基本功能;另一个是ApplicationContext应用上下文,它作为容器的高级形态而存在。应用上下文在简单容器的基础上,增加了许多面向框架的特性,同时对应用环境做了许多适配。 1 BeanFactory 1.1 BeanFactory的应用场

惟愿无事 1165
上一篇: javascript
下一篇: java 基础概念知识
xiaoxinphp
博客等级 码龄18年 1粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值