Spring IoC和Spring Bean概述

本文围绕Spring框架展开,介绍其作用,包括提供轻量级编程、切面编程及整合其他框架等。阐述了IoC控制反转概念,即通过描述和第三方获取对象,容器基于BeanFactory和ApplicationContext接口。还详细讲解了Spring Bean的生命周期,如从xml加载到容器、处理资源、解析注册及实例化等过程。
引言

     在Spring中,认为一切Java类都是资源,而资源就是Bean,容纳这些Bean的就是IoC容器

Spring的作用

    Spring的作用主要有以下几点:
1、提供轻量级和低侵入的编程,可以通过配置(XML、注解) 来扩展POJO的功能,
   通过依赖注入去扩展功能,降低系统耦合度。
2、提供切面编程,尤其是将数据库应用通过切面消除了以前复杂的try catch代码结构
3、提供模板类去整个MyBatis、Redis等其他框架。


IoC (控制反转)

    IoC是一种通过描述(XML或者注解) 然后通过第三方去获取特定对象的方式。
    IoC的概念就是让对象的生成不需要程序员自己完成。当需要一个对象的时候,通过IoC容器的getBean方法即可获取对象,而不是自己去创建。

IoC容器
    IoC容器的设计主要是基于BeanFactory和ApplicationContext两个接口,BeanFactory是IoC的最底层接口。
    所谓的IoC容器就是一个Map,key是类,value是类的实例。

在这里插入图片描述



Spring Bean 的生命周期

           在这里插入图片描述
Bean的加载过程 (如何加载到IoC容器中)
    Bean的加载过程就是:
从xml读取bean的信息加载到Spring容器中,通过xml配置的id从Spring容器反射得到这个类的实例对象。

1.获取配置文件资源.
Resource resource = new ClassPathResource(“xml”);
    Resource接口将各种底层资源File资源、Classpath下的资源、URL资源、InputStream资源、Byte数组资源抽象化了。

2.对获取的xml资源进行一定的处理检验
    (1)通过类加载器注入DefaultListableBeanFactory对象
    (2)执行XmlBeanFactory的构造方法,其中把配置文件Resource传给他
    (3)XmlBeanFactory委托XmlBeanDefinitionReader对Resource执行loadBeanDefinitions(resource),而在loadBeanDefinitions()中,reader将resource向下转型为EncodedResource,并对资源进行一定封装。

3.处理包装资源并解析
    (1)reader将资源传入核心处理部分doLoadBeanDefinitions(inputSource, encodedResource.getResource()); 这一步做了关键的3步:
1)获取XML文件的验证模式(DTD或者XSD)
2)加载XML并得到Document
3)根据Document解析并注册BeanDefinition( doRegisterBeanDefinitions() )

4.加载提取bean并实例化(添加到beanDefinitionMap中)
(1)将getBean()方法的参数进行解析转换
(2)尝试从缓存中加载单例
    单例在同一个容器中只创建一次,后续再获取bean直接从单例缓存中取,获取bean的过程是从底层map中获取,底层map的key是BeanName,value是bean实例。
(3)bean的实例化
    如果从缓存中得到了bean的原始状态,就对bean实例化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值