Spring--IOC容器

Spring就是一个大工厂,可以将所有对象的创建和依赖关系维护都交给spring管理

容器:

  • 容器是一种为某种特定组件的运行提供必要支持的一个软件环境
  • Spring的核心就是提供了一个IOC容器,它可以管理所有轻量级的JavaBean组件,提供的底层服务包括组件的生命周期管理配置和组装服务AOP支持,以及建立在AOP基础上的声明式事务服务等。

Spring的IOC容器是个高度可扩展无侵入容器

  • 所谓的无侵入,是指应用程序的组件无须实现Spring的特定接口,或者说,组件根本不知道自己在Spring的容器中运行,这种好处如下:

1、应用程序组件既可以在Spring的IOC容器中运行,也可以自己编写代码自行组装配置—一句话就是可以自定义,也可以使用IOC容器
2、测试的时候不依赖Spring容器,可以单独测试

IOC(DI:依赖注入)原理

IOC全称 Inversion of Control 称为控制反转
一般Java组件都采用了通过 new 创建实例的方式,存在一下缺点

  • 实例化一个组件其实很难,要想实例化对象要先实例化该对象内部的对象才行
  • 可以共享同个对象,但是谁创建,谁共享不好处理
  • 释放资源时许多组件要销毁,但是如果该组件被许多组件共享,要如何确保它的使用方都已经全部销毁?
  • 随着创建的组件越多,它们之间的关系越复杂
  • 测试某个组件时较麻烦,必须要在真实的数据库环境下执行
    因此若一个系统有大量的组件,其生命周期和相互之间的依赖关系如果由组建自身维护,大大增加了系统的复杂度。而且会导致组件之间的耦合极为紧密,给测试和维护带来了极大的困难

基于以上缺点促使了IOC的诞生

IOC主要解决的问题
1、谁负责创建组件
2、谁负责根据依赖关系组装组件
3、销毁时、如何按照依赖顺序正确销毁

控制权的转变
传统的控制权在程序本身,控制流程由开发者决定
IOC模式下:控制权转移到了IOC容器,组件的创建和配置由IOC容器负责。
在IOC模式下,程序只需要直接使用创建并配置好的组件即可,但是需要某种“注入”机制

使用IOC容器的好处
1、程序不关心怎么创建对象,因此,也不必编写读取数据库配置之类的代码。
2、通过注入的方式,共享组件变得很简单
3、测试更简单,因为注入可以使用内存数据库,而不是真实的MySQL配置

IOC解决了一个最主要的问题:将组件的创建+配置组件的使用相分离 ------即创建配置是一块,使用则是另一块两者分离降低了耦合。并且组件的生命周期由IOC容器负责

依赖注入方式
1、set() 方法实现
2、构造方法实现
3、以上两种混合使用

个人理解
IOC是个容器,主要负责的是我们常说的对象实例化,在spring中对象的实例化不再由开发者实现,而是统归IOC,它将对象实例化并且保存在容器中,当我们使用时,我们按照注入规则将对象注入进行使用。
在IOC中将所有的对象组件称为JavaBean,即配置一个组件就是配置一个Bean

用一句话来说:IOC模式下,对象的创建从直接 new 对象 转变为 通过注入生成对象。控制权进行了转变

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值