Spring:IOC

一、IOC的理解:

        springIOC又叫控制反转(Inversion ofControl),在传统的java编程里我们只能通过new关键字来创建对象,这就导致了对象与对象之间的依赖关系很复杂,耦合程度较高。而IOC的作用是实现了对对象的控制管理。也就是我们把设计好的对象交给IOC容器控制管理,当我们需要的时候就直接从IOC容器中获取。而有了IOC容器管理这些bean以后,相当于我们把对象的创建和查找依赖对象的控制权交给了容器,这就是的对象与对象之间的依赖关系是一种松耦合状态,极大程度的提高了程序的灵活性和高可用性。

二、IOC容器

        Spring就是用一个ConcurrentHashMap来作为IOC容器存储的,其中key是beanName,value是bean实例。

三、IOC好处

        1、管理对象创建和维护对象依赖关系。 对象创建不是一件容易的事情,在对象关系比较复杂时,如果是依赖程序员来维护,那是相当头痛的。

        2、解耦,容器去维护具体对象。

        3、托管某些类的产生过程。例如,我们在类产生过程中需要去做一些事情,最直接的例子就是代理,如果有容器程序可以把这部分处理交给容器,应用程序则无需去关心类是如何完成代理的。

四、IOC的优点

        1、以最小的代价和最小的侵入性实现对象的松散耦合。

        2、ioc容器支持加载服务时的饿汉式的初始化和懒加载。

        饿汉式初始化:类加载的时候就创建类实例。与之对应的还有,懒汉式初始化,懒汉式初始化就是在第一次调用时创建实例对象。

        懒加载:是一种延迟加载机制,在需要用到某个对象或数据时才进行加载,而不是在系统启动或加载时立即加载。

五、Spring IOC的处理流程

主要分为三个阶段:

        1、IOC容器的初始化。根据程序中的XML配置文件或者注解等bean的声明方式通过加载解析后生成一个BeanDefinition(因为BeanDefinition中存储的是bean的定义消息),然后把BeanDefinition注册到IOC容器中。通过注解或XML声明的bean会解析得到一个BeanDefinition实体,这个实体中包含bean中定义的基本属性和其他一些消息,最后把这个BeanDefinition保存到Map中,从而完成初始化。IOC的作用就是对这些注册bean的定义信息处理和维护,它是IOC容器控制反转的核心。

        2、第二个阶段是Bean初始化和依赖注入。通过反射机制,针对没用设置lazy-init属性的单例bean进行初始化,完成bean的依赖注入。

        3、第三个阶段是bean的使用。通常我们会通过注解@Autowired或者beanFactory.getBean()从IOC容器中获取bean。

仅供参考。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值