Ioc个人理解

简介: IOC根据官方给的意思是依赖注入,说白了,调用类的方面不用"new 类名",而是在配置文件中配置后,然后新建一个工厂类,这样在工厂类中就可以直接调用了。下面是实现IOC的过程。


image.png

一.IOC原理

IOC根据官方给的意思是依赖注入,说白了,调用类的方面不用"new 类名",而是在配置文件中配置后,然后新建一个工厂类,这样在工厂类中就可以直接调用了。下面是实现IOC的过程。

1.配置spring.xml

现在都用注解了,但是内部实现方式应该是相同的

<bean id="user" class="cn.cbb.ioc.User"></bean>

2.新建main方式直接调用。

ApplicationContext cta = new ClassPathXmlApplicationContext("spring.xml");
City city = (City)cta.getBeanFactory().getBean("City");

3.原理

1.新建一个factory工厂类。

2.从spring.xml中取出配置,获取标签,通过控制反转得到类的Class。

3.将得到的Class对象注入到factory工厂类中。

4.从工厂类中通过类.方法就可以调用。

二.ApplicationContext 和FactoryBean

FactoryBean:是工厂类的接口,只有在调用时才被载入。

ApplicationContext :实现了FactoryBean接口,在项目初始化时就被载入。同时又传递上下文和资源访问的能力。

以下是FactoryBean的类图。他们完成的功能基本相同,只不过他们的侧重点不同,具体的侧重点大家可以去这位老哥这去研究研究 https://blog.csdn.net/qq_34090008/article/details/78772189

image.png

三.BeanFactory和FactoryBean的区别

BeanFactory:是Ioc最基本的接口,用于新建一个工厂类管理spring下的组件。

 FactoryBean:是一个bean,是BeanFactory的组件,只不过比较特殊,是一个工厂Bean。同时从spring  的ApplicationContext中取出的是FactoryBean的工厂类,而不是FactoryBean本身。如果需要获得本身则加入。


相关文章
|
Ubuntu Linux
在Linux中如何解压 .xz 和 tar.xz 文件?
【4月更文挑战第17天】
12223 6
在Linux中如何解压 .xz 和 tar.xz 文件?
|
搜索推荐 vr&ar UED
虚拟现实与增强现实的融合:沉浸式体验的新时代
【9月更文挑战第17天】虚拟现实(VR)与增强现实(AR)的深度融合正开启沉浸式体验的新时代。两者结合不仅革新了游戏娱乐,让玩家在虚拟与现实中自由互动,还在教育中打破了传统课堂限制,使学习更直观有趣。在医疗领域,VR/AR助力手术模拟与康复训练,提升医疗服务水平。文旅产业也迎来升级,游客能深入体验历史文化。尽管面临技术成熟度与普及性挑战,但未来将带来更多个性化与智能化的沉浸式体验,推动各行各业的高质量发展。
|
存储 算法 索引
python用户输入和while循环(六)
python用户输入和while循环(六)
123 0
|
人工智能 搜索推荐 API
开启电商新征程:小红书API
小红书API作为连接社交与电商的桥梁,提供了丰富的工具,如商品详情、笔记详情和搜索API等,助力商家精准营销和用户体验提升。通过这些API,商家可以实时追踪市场动态、优化产品设计,并实现流量高效转化。新兴美妆品牌Glow Beauty和传统服饰企业经典风尚的成功案例展示了其巨大潜力。未来,AI技术与跨平台协作将进一步推动小红书API在电商领域的创新与发展。
650 24
|
存储 关系型数据库 数据库
轻量级数据库的利器:Python 及其内置 SQLite 简介
轻量级数据库的利器:Python 及其内置 SQLite 简介
469 3
|
机器学习/深度学习 数据采集 人工智能
数据科学在人工智能发展中的桥梁作用
本文深入探讨了数据科学在推动人工智能(AI)技术发展中的核心角色。通过分析数据科学与AI之间的相互依赖关系,本文揭示了如何通过高质量的数据分析和处理提升AI算法的效率和准确性。文章进一步讨论了数据科学在AI伦理、可解释性以及跨领域应用中的重要性,强调了数据科学不仅仅是AI发展的催化剂,更是其道德和社会责任的守护者。通过引用最新的科研研究和实验证据,本文旨在为读者提供一个关于数据科学在AI技术创新和应用中不可或缺的角色的全面视角。
|
SQL 关系型数据库 MySQL
实时计算 Flink版产品使用问题之MySQL到MySOL的批量实时同步该如何操作
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
安全 5G 网络安全
gRPC(五)进阶:通过TLS建立安全连接
发生会话密钥交换。在此过程中,客户端和服务器必须就密钥达成一致,以建立安全会话确实在客户端和服务器之间的事实——而不是在中间试图劫持会话的东西。
2414 1
gRPC(五)进阶:通过TLS建立安全连接
|
IDE 开发工具
idea的Learn IDE Features
idea的Learn IDE Features
169 1
|
文件存储 数据安全/隐私保护
用旧手机搭建服务器并实现内网穿透不需要root(本人亲测很多次最简单的一个)
用旧手机搭建服务器并实现内网穿透不需要root(本人亲测很多次最简单的一个)
1091 0