找对象攻略 - 必不可少的Spring IOC

ADS交叉耦合振荡器VCO仿真 本文主要参考视频中如何使用进行ADS交叉耦合振荡器仿真和分析,由于视频中有诸多错误和视频清晰度较低,虽然视频博主及时改正,为了节省学习时间,可以直接参考本文。 阅读详情

具体内容可参见个人网站:http://www.waltersun.cn/documents/java/spring-iocfindbeans.html

找对象攻略 - 必不可少的Spring IOC

什么是IOC
我们常说Java程序员需要对象,⾃⼰new⼀个就⾏了,但实际没那么简单。举个例⼦,如果我找对象,我希望对⽅⻓得好看、⼼地善良,这就产⽣了两个条件:
条件1:⻓得好看
条件2:⼼地善良

什么样的姑娘满⾜这两个条件并且能看上我呢?我不知到,我得去接触,然后了解,最后再确定是不是彼此合拍,这个过程需要花⼤量时间与精⼒。这时候,如果有万能的神存在就好了。

我说:神啊,请告诉我哪位姑娘满⾜条件并且能看上我?神:没有我:什么?难道世界上没有⻓得好看⼼地善良的姑娘?神:不是,没⼈能看上你。

你看!有或者没有,很快就能确定,不需要我⾃⼰劳⼼费神的寻觅。

回到Java编程,随着程序的复杂度提⾼,我们new⼀个对象也需要满⾜各种条件,这是⼀个繁琐的⼯作。这时候,IOC容器就扮演了神的⻆⾊,它来帮你管理对象,你要做的就是告诉它你需要什么对象,它则返回这个对象,或者告诉你没有这样的对象。

编程式使⽤IOC容器
百度⼀下编程式使⽤IOC容器,很⼤概率看到这样的代码:

这个过程,就是我们⼿动创建IOC容器并获取对象的⽅法:

  1. 通过⽂件名bean.xml创建ClassPathResource资源对象 。
  2. 创建IOC容器的实现类之⼀DefaultListableBeanFactory。
  3. 创建⼀个资源解析器,准备解析bean.xml中的配置。
  4. 通过loadBeanDefinitions⽅法将配置解析为BeanDefinition。
  5. 通过IOC容器getBean⽅法获取Bean,这⾥的Bean是基于步骤4产⽣的BeanDefinition创建的。

我们接下来主要了解第4步,配置⽂件是如何被解析为BeanDefinition的。

加载BeanDefinition源码
以XmlBeanDefinitionReader 的loadBeanDefinitions 为⼊⼝,通过DocumentLoader将Resource 解析为Document 对象,再调⽤BeanDefinitionDocumentReader 创建BeanDefinition 。

01
将配置解析为Document对象
我们有bean.xml⽂件,要获取Document ,这不是javax.xml 库⾃带的功能吗?事实确实如此,Spring也是直接通过javax.xml 库解析,但还做了些额外的操作,接下来我们⼀起看看。

以DefaultDocumentLoader 的loadDocument 为⼊⼝,最终执⾏解析⼯作的是java.xml 库的DocumentBuilder 对象,Spring实现了EntityResolver 和ErrorHandler 供DocumentBuilder 使
⽤,它们的作⽤是什么呢?

EntityResolver的作⽤
我们经常会看到xml⽂件开头有这样的内容:

以上内容的作⽤就是告诉解析器,我要使⽤test.dtd ⽂件对xml进⾏校验。解析器默认通过⽹络下载test.dtd ⽂件,这个下载过程可能会有错误,从⽽导致程序报错。EntityResolver 的作⽤是程序通过实现该接⼝提供⼀个寻找校验⽂件的⽅法,可以将⽂件存放到本地,这样就避免了通过⽹络下载导致的错误。

XML有两种验证机制DTD和XSD,细节我们不在此讨论,针对两种机制,Spring提供了以下两个类:
BeansDtdResolver:针对DTD验证,返回dtd⽂件
PluggableSchemaResolver:针对XSD验证,返回xsd⽂件

ErrorHandler
ErrorHandler 的实现类SimpleSaxErrorHandler 很简单,就是在解析异常的时候打印⽇志或抛出异
常。

02
创建BeanDefinition
将bean.xml解析成Document 之后,spring通过BeanDefinitionParserDelegate 将Document 解析
为BeanDefinition

Spring 有两种 Bean 声明⽅式:
配置⽂件式: 。
⾃定义注解⽅式: tx:annotation-driven 。

对应的时序图如下:

最终,我们的BeanDefinition会注册到DefaultListableBeanFactory容器中。

总结下来,BeanDefinition解析过程其实也很直观:bean.xml -> Document -> BeanDefinition,这么⼀想是不是我们也能写⼀个简单的过程呢?

Java与OSG的梦幻联动:深入编译OpenSceneGraph的Java JNI桥梁,开启3D视觉盛宴的奇幻之旅 🔥关注墨瑾轩,带你探索编程的奥秘!🚀🔥超萌技术攻略,轻松晋级编程高手🚀🔥技术宝库已备好,就等你来挖掘🚀🔥订阅墨瑾轩,智趣学习不孤单🚀🔥即刻启航,编程之旅更有趣🚀在编译OpenSceneGraph (OSG) 的Java版本时,首先需要了解OSG本身是一个主要用于3D图形和视觉仿真的开源库,它主要支持C++。然而,OSG 也支持通过JNI(Java Native Interface)与Java集成,这允许Java程序调用OSG的C++库。 阅读详情

相关推荐

sysrepo 开发者指南(一个基于libyang与支持rpc的数据库)

sysrepo 开发者指南(一个基于libyang与支持rpc的数据库) 日志记录 默认情况下,所有 Sysrepo 日志记录都处于关闭状态。如果启用,日志消息有 3 种输出。它们可以写入stderr、由 处理syslog或简单地传递给回调。 请务必注意,启用 Sysrepo 日志记录也会修改libyang日志记录设置。错误消息被视为标准 Sysrepo 错误,其他严重性较低的消息完全隐藏。要更改此行为,只需在启用 Sysrepo 日志记录后调整libyang日志记录设置。 此外,几乎每个 Sysrepo

weixin_43489394的博客 9229

【Spring】IOC从演变到自动装配的全攻略详解

Spring 框架是一个非常流行的 Java 开发框架,其中的 IOC(Inversion of Control)容器是 Spring 的核心之一。在这篇博客中,我们将深入探讨 IOC 容器的原理和使用方法。通过本文,你将了解到 Spring IOC 容器的工作原理、如何配置和使用 IOC 容器、以及 IOC 容器的优缺点等方面的知识。同时,我们还将通过一些有趣的例子和比喻来帮助你更好地理解 IOC 容器的概念和使用方法。如果你想成为一名优秀的 Java 开发者,那么掌握 Spring IOC 容器的知识是

万维网连五洲,二进制写尽天下事,喜欢结识新伙伴寻找志同道合的朋友,欢迎一起探讨学习 1058

C语言实现TCP聊天室:Socket编程与并发模型实战解析

网络编程是构建分布式系统的核心技术,其核心在于理解进程间通信的底层机制。TCP/IP协议栈提供了可靠的字节流传输服务,通过Socket API这一抽象接口,开发者可以在应用层建立连接、收发数据。为了高效处理多个并发连接,服务器需要采用多线程或I/O复用模型,前者为每个连接创建独立线程,逻辑清晰但资源消耗大;后者通过select、poll或epoll等系统调用监控多个文件描述符,显著提升并发能力。这些技术是构建高性能网络服务(如即时通讯、在线游戏服务器)的基础。本文以C语言实现一个简洁的TCP聊天室为例,详细

weixin_32642109的博客 292

​Spring面试全攻略:从IoC到微服务,万字深度解析(含图解)​

自2004年发布以来,Spring Framework已经从一个轻量级的依赖注入容器,发展成为一套庞大的、涵盖企业应用开发方方面面的生态系统。它通过控制反转(IoC)​、面向切面编程(AOP)​​ 等核心理念,极大地简化了Java企业级开发的复杂性。

一起探索IT的世界 1232

Vivado 2021.1 实战:手把手教你用IEEE1735 V2加密你的Verilog源码(附完整TCL命令)

本文详细介绍了在Vivado 2021.1中使用IEEE1735 V2标准加密Verilog源码的全流程,包括许可证申请、密钥文件配置、TCL命令执行及加密后验证。通过实战步骤和完整TCL命令,帮助开发者有效保护FPGA设计知识产权,确保核心算法安全。

weixin_42706667的博客 191

在银河麒麟V10上部署Atlas 300i Duo:从固件到驱动的一站式踩坑笔记

日期:2025-09-09关键词:鲲鹏920、Atlas 300i Duo、银河麒麟V10、NPU、驱动、固件。

weixin_41544125的博客 2814

Spring框架完全攻略:Java-Notes中的IoC与AOP实战教程

Spring框架是Java开发领域中最流行的企业级应用开发框架之一,它以IoC(控制反转)和AOP(面向切面编程)为核心,为开发者提供了一站式的企业级应用解决方案。本教程将结合Java-Notes项目中的框架笔记,带您深入理解Spring框架的核心概念与实战应用。 ## 一、Spring框架总览:企业级开发的基石 Spring框架采用分层架构设计,提供了从基础的Bean管理到复杂的企业级服务(

gitblog_00127的博客 1081

AI原生应用评测:主流大语言模型性能对比

任务适配性:是否匹配应用的核心任务(如代码生成需强逻辑推理,内容创作需强创意性);上下文能力:处理长序列(如10万+字文档)的理解与生成能力;可靠性:幻觉(Hallucination)率、事实准确性、安全合规性;性价比:API调用成本、延迟、 scalability(扩展能力)。AI原生应用的核心是LLM与应用场景的深度协同。

架构师的AI之路,分享AI应用开发架构的学习与实践。 507

《Spring攻略》 第1章 Spring简介 - IoC基础

1实例化SpringIoC容器 问题: 你必须实例化Spring IoC容器,读取配置来创建bean实例。然后,你可以从Spring IoC容器中得到可用的bean实例。 解决方案: Spring提供了两种IoC容器实现类型。基本的一种称为Bean工厂(Bean Factory)。另一种称为应用程序上下文(Application Context),这是对bean工厂的一种兼容扩

java相关技术(partner4java专栏)希望对您的学习有所帮助 1977

互联网的发展简史—web

互联网是我现在生活所离不开的一个东西,但是你知道互联网的前世今生吗?本文将讲解互联网的发展史,以及很火的元宇宙概念。

yj11290301的博客 3563

实现真正的「人机」对战:引入三方 AI 引擎

引入三方 AI 引擎 前边,我们实现了与云库对战的象棋游戏。这一节中,我们将开始实现真正的「人机」对战 — 人与手机 AI 之间对弈; 实现一套象棋 AI 工程浩大,这个工作我们后续文章会做一番介绍。现代软件工程并不主张每个人都「造轮子」,因此我们要有「站在巨人肩膀上」的小智慧。 本节概要 从 github 寻找开源中象引擎 梳理引擎接入的思路 寻找适合的开源中国象棋引擎 github 上有大...

tosmart的博客 983

spring文档阅读——Core: The IoC Container

用了这么久的spring框架却一直不知其所以然,直接在网上看别人的攻略又感觉差了点什么,因此决定系统的看一下spring官方的英文文档。本系列博客将按照每一篇文章对应官方文档中的一个小节的形式发布,文章内容分为正文和单词两部分。 笔者的英文水平一般,正文中的引用翻译也只是部分翻译,故本文只是spring文档阅读过程中的记录和分享,不可作为译文参考。 官方文档地址:https://spring.io/projects/spring-framework

ary的博客 834

基于Python的股票K线图爬取与形态识别系统

本文详细介绍了一个基于Python的股票K线图爬取与形态识别系统。该系统通过网络爬虫技术获取股票历史数据,使用Matplotlib生成K线图,并应用卷积神经网络(CNN)对经典K线形态进行识别。文章详细阐述了数据采集、K线图生成、CNN模型构建与训练的完整流程,并提供了完整的代码实现。本研究为金融科技领域的毕业设计提供了有价值的参考方案。关键词:Python爬虫、K线图、卷积神经网络、形态识别、股票交易。

2201_76125261的博客 1033

《Spring攻略》 第2章 高级Spring IoC容器

1调用静态工厂方法创建Bean 问题: 你打算调用一个静态工厂方法在Spring IoC容器中创建一个Bean,静态工厂方法的目的是在静态方法中封装对象创建过程。 解决方案: Spring支持调用一个静态工厂方法创建Bean,这个方法应该在factory-method属性中指定。 工作原理: factory-method public class ProductCreator { p

java相关技术(partner4java专栏)希望对您的学习有所帮助 2022

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【Spring 核心: IoC&DI】从原理到注解使用、注入方式全攻略

这篇文章搭建了 Spring 核心内容 :IoC/DI 的知识框架,先明确概念与 IoC 的优势;再讲 IoC 的 Bean 管理实操,涵盖存储、定义、扫描路径;最后讲 DI 的三种注入实操方式,对比各方式的适用场景,同时说明注入异常的解决办法。

独断万古他化的博客 1万+

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Spring面试高频题解析:从IoC到AOP的完整攻略

控制反转(IoC)和面向切面编程(AOP)是Spring框架的两大核心技术。IoC通过依赖注入(DI)实现组件解耦,其核心容器采用三级缓存机制解决循环依赖问题。AOP则基于动态代理实现,支持JDK动态代理和CGLIB两种方式,用于日志记录、事务管理等横切关注点。在Java后端开发中,Spring的事务管理尤为重要,涉及7种传播行为和4种隔离级别。理解这些核心机制不仅能应对90%的Spring面试问题,更能帮助开发者构建高可维护性的企业级应用。本文特别针对循环依赖和动态代理等高频考点进行深度解析,并给出实际工

weixin_34021089的博客 466

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...

Spring IoC、AOP、Transaction、MVC 归纳小结

点击关注上方“java大数据修炼之道”,设为“置顶或星标”,你想要的技术干货第一时间送达。精品专栏java日志性能哪些事★★★★学习Java需要吃透这些基本概念★★★★Spring...

hello world! 286

Spring框架面试全攻略:从IOC/AOP到微服务与AI集成

控制反转(IOC)和面向切面编程(AOP)是Spring框架实现松耦合和模块化设计的核心原理。IOC容器通过依赖注入管理对象生命周期,AOP则通过动态代理技术实现横切关注点的统一处理,这两大机制共同构成了Spring生态的技术基石。在微服务架构和AI技术兴起的背景下,Spring Boot通过自动装配简化了配置,Spring Cloud提供了服务治理的完整解决方案,而新兴的Spring AI项目则让开发者能够便捷地集成大语言模型和向量数据库。本文围绕Spring面试高频考点,系统梳理了从核心原理到微服务、A

weixin_29306317的博客 245

《Spring攻略(第2版)》——1.2 配置Spring IoC容器中的Bean

本节书摘来自异步社区《Spring攻略(第2版)》一书中的第1章,第1.2节,作者: 【美】Gary Mak , Josh Long , Daniel Rubio著,更多章节内容可以访问云栖社区“异步社区”公众号查看 1.2 配置Spring IoC容器中的Bean 1.2.1 问题Spring提供了一个强大的IoC容器来管理组成应用的bean。为了利用...

weixin_33887443的博客 87

Spring 学习笔记2—— IoC容器

必须实例化SpringIoC容器,读取其配置来创建bean实例,然后从Spring IoC容器中得到可用的bean实例。Spring提供两种IoC容器实现类型。 Bean factory Application contet 应用程序上下文提供比Bean工厂更高级的特性,两种类型配置文件相同。 Bean工厂接口是:BeanFactory 应用程序上下文接口:ApplicationContextA

猿来这样-谢厂节的博客 824

实例化Spring IoC容器

Spring提供两种IoC容器实现类型: Bean工厂(Beanfactory),对应的接口是BeanFactory。应用程序上下文(Applicationcontext),对应的借口是ApplicationContext,推荐使用。 ApplicationContext接口对应的实现类有: ClassPathXmlApplicationContext:实现从clas

殷建卫 713

Spring5详解

Spring5详解 文章目录Spring5详解概念Spring的特点1、轻量级2、控制反转3、面向切面4、容器5、框架Spring的优势1、方便解耦,简化开发2、AOP 编程的支持3、声明式事务的支持4、方便程序的测试5、方便集成各种优秀框架6、Java 源码是经典学习范例Spring 的体系结构Spring中的常用注解Spring IOC1、概念2、spring 中工厂的类结构图1、BeanFactory 和 ApplicationContext 的区别2、IOC 中 bean 标签和管理对象细节1、be

qq_45592174的博客 7035

《Spring攻略(第2版)》——第1章 Spring简介 1.1实例化Spring IoC容器

本节书摘来自异步社区《Spring攻略(第2版)》一书中的第1章,第1.1节,作者: 【美】Gary Mak , Josh Long , Daniel Rubio著,更多章节内容可以访问云栖社区“异步社区”公众号查看 第1章 Spring简介 在本章中,你将参加关于Spring、核心容器以及容器所提供的一些全局可用设施的一个速成班(或者一次复习),你还将...

weixin_33881041的博客 92

Spring攻略笔记

--动态代理 1. aspectj 2. cglib *************Spring**************** 一、IOC容器 1. 反射 2. 代理 二、AOP(面向切面编程) 1. 切入点 2. 通知 2. 增强器 附加:aspectj 的加载时、编译时植入。 三、事务管理 1. jdbc的封装(无用关系底层API) 2. 事务

鱼泽弋海的专栏 837
上一篇: allatori集成
下一篇: 加解密算法及国密算法介绍
Walter Sun
博客等级 码龄9年 1726粉丝 288原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Walter Sun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值