1-Spring的IoC-DI容器

本文详细介绍了Spring的IoC(控制反转)和DI(依赖注入)概念,阐述了Spring如何通过IoC容器管理bean,以及依赖注入的优势。内容涵盖了Spring的模块化结构、IoC容器的作用,以及Bean的创建方式。此外,还讨论了Spring的配置方式,包括XML、注解和JavaConfig,并提供了核心配置文件`applicationContext.xml`的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

file:///C:/Users/Administrator/Desktop/Spring/1-Spring的IoC-DI容器.html 1/34
Spring的IoC容器
IoC在程序开发中,实例的创建不再由调用者管理,而是由Spring容器创建。Spring容器会负责控制程序
之间的关系,而不是由程序代码直接控制,因此,控制权由程序代码转移到了Spring容器中,控制权发
生了反转,这就是Spring的IoC思想
基础理论回顾
Spring是一个轻量级的控制反转IoC/DI依赖注入和面向切面AOP的开源容器框架,是一个开源的
Java/Java EE全功能栈full-stack的应用程序框架,以Apache许可证形式发布
Spring是一个轻量级的DI/IoC和AOP容器框架。存在的目的是用于构建轻量级的JavaEE应用。
Spring以一种非侵入式的方式来管理你的代码,Spring提倡”最少侵入”,这也就意味着你可以适当的时
候安装或卸载Spring
目的:解决企业应用开发的复杂性
功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能
范围:任何Java应用
简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架
Spring基础就是IoC/DI容器
简单来说,Spring是一个分层的JavaSE/EE full-stack(一站式解决方案) 轻量级开源框架
Spring的模块化结构
6个模块20多个子项目组成的,Spring的模块化是很强的,各个功能模块都是独立的,可以选择的使用
public class BeanFactory{
private static final Map<String,Object> map=new HashMap<>();
public static Object getBean(String id){}
}
1
2
3
42021/5/8 1-Spring的IoC-DI容器
file:///C:/Users/Administrator/Desktop/Spring/1-Spring的IoC-DI容器.html 2/34
IoC(Inversion of Control):其思想是反转资源获取的方向
DI(Dependency Injection) — 即组件以一些预先定义好的方式(例如: setter 方法)接受来自如容器的资源
注入. 相对于 IoC 而言,这种表述更直接
bean是Spring管理的基本单位,在Spring的应用中,所有的组件都是bean,bean包括数据源、
Hibernate的SessionFactory及事务管理器等。 Spring里的bean是非常广义的概念,任何的Java对
象,Java组件都可被当成bean处理。甚至这些组件并不是标准的JavaBean。整个应用中各层的对
象都处于 Spring 的管理下,这些对象以 bean 的方式存在,Spring负责创建 bean 实例,并管理其
生命周期。
bean在Spring容器中运行时,无须感受Spring容器的存在,一样可以接受Spring的依赖注入,包括
bean属性的注入,合作者的注入及依赖关系的注入等
Spring优势
低侵入/低耦合(降低组件之间的耦合度,实现软件各层之间的解耦。)
声明式事务管理
方便集成其他框架
降低JavaEE开发难度
Spring框架中包括JavaEE 三层的每一层的解决方案 (一站式)
Spring功能
Spring能帮我们根据配置文件创建及组装对象之间的依赖关系
Spring 面向切面编程能帮助我们无耦合的实现日志记录,性能统计,安全控制
Spring能非常简单的帮我们管理数据库事务
Spring还提供了与第三方数据访问框架(如Hibernate、JPA)无缝集成,而且自己也提供了一套
JDBC访问模板,来方便数据库访问
Spring还提供与第三方Web(如Struts、JSF)框架无缝集成,而且自己也提供了一套Spring MVC
框架,来方便web层搭建2021/5/8 1-Spring的IoC-DI容器
file:///C:/Users/Administrator/Desktop/Spring/1-Spring的IoC-DI容器.html 3/34
Spring能方便的与Java EE(如Java Mail、任务调度)整合,与更多技术整合(比如缓存框架)。
Spring的核心思想
不重复发明轮子理论
锤子理论
A a = new A1()然后通过a来调用接口的方法,对于C来说是主动实例化对象,直接获取依赖。
这种实现方法的缺点:
更换实现需要重新编译源代码
很难更换实现,很难测试
耦合实例生产者和实例消费者
工厂模式
设计模式属于创建型模式,它提供了一种创建对象的最佳方式
主要解决:主要解决接口实现的选择问题。
优点: 1、一个调用者想创建一个对象,只要知道其名称就可以了。 2、扩展性高,如果想增加一个产
品,只要扩展一个工厂类就可以。 3、屏蔽产品的具体实现,调用者只关心产品的接口
缺点:每次增加一个产品时,都需要增加一个具体类和对象实现工厂,使得系统中类的个数成倍增加,
在一定程度上增加了系统的复杂度,同时也增加了系统具体类的依赖。这并不是什么好事。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值