Spring框架知识梳理之IOC和DI

Spring IOC和DI

  • IOC:

    是控制反转,是一种思想,不是技术,即创建对象的控制权的反转。在不使用Spring的情况下,我们是在程序中根据需要来new出对象,创建对象的控制权由程序本身来控制。在spring中,不再是我们自己去new对象,而是通过注解或者xml配置的方式,让spring去帮我们创建需要的对象,然后放在spring容器里面,把创建对象的控制权交给了spring,在我们需要这个对象的时候去spring容器里面去取。

  • DI:

    是依赖注入,本质上跟IOC说的是同一个思想,DI侧重于实现方式,是大牛马丁-福洛研究了springIOC之后提出的新名词。这里的依赖是指当前程序依赖spring容器,注入是指spring容器把程序所需要的对象注入程序之中。

  • IOC的作用:

    我们通过IOC把Bean都交给spring容器去管理,同时也相当于把Bean之间的依赖关系也交给了spring容器,这样一来可以在一定程度上减少Bean之间的耦合,但是并不能完全消除耦合。

  • DI的三种注入方式:

    1. setter方法:程序提供需要注入的属性的set方法,spring根据setter方法进行注入。
    2. 构造函数:程序提供自己的带参构造方法,spring根据构造方法进行注入。
    3. 接口:程序提供所需对象的接口,spring根据接口方法进行注入。(不常用)

spring中Bean的生命周期和作用域

  • ApplicationContext创建容器的三个常用实现类:

    1. ClassPathXmlApplicationCOntext:它可以加载类路径下的配置文件,所以要求配置文件必须在类路径下,不然无法创建容器。
    2. FileSystemXmlApplicationContext:它可以加载任意磁盘路径下的配置文件,要求必须有访问权限
    3. AnnotationConfigApplicationContext:它用于读取配置文件创建容器
  • ApplicationContext和BeanFactory两个接口创建容器的区别:

    1. ApplicationContext:它采用立即构建的方式,一旦读取完配置文件立马创建配置文件中配置的对象
    2. BeanFactory:它采用延迟加载的方式,什么时候程序要根据id或者类型获取对象了,再创建。该接口属于比较老的经典接口,不能支持spring的许多插件,比如AOP,Web应用等。
    3. FactoryBean:在IOC容器的基础上给Bean的实现增加了一个简单地工厂模式和装饰模式,能上产或者修饰Bean
  • Spring容器创建Bean的三种方式:

    1. 在spring的配置文件中使用Bean标签,并配置id和class属性且没有其他属性标签时,spring采用的就是这种默认的构造方法来创建Bean。一般用于自定义类的实例化。
    2. 使用工厂中的非静态方法创建对象,需要在配置文件中配置工厂类和创建对象的非静态方法。一般用于jar包中类的实例化。
    3. 使用工厂中的静态方法创建对象,需要在配置文件中配置工厂类和创建对象的静态方法。一般用于jar包中类的实例化。
  • Spring中Bean的作用范围:

    1. singleton:(默认)单例,IOC容仅创建一个实例,每次返回的都是同一个实例
    2. prototype:多例,IOC容器可以创建多个实例,每次返回的都是一个新的实例
    3. request:仅用于HTTP请求,每次HTTP请求都会创建一个新的Bean
    4. session:仅用于HTTP Session,同一个Session共享一个Bean实例,不同Session使用不同的
    5. global-session:仅用于HTTP Session,所有的Session共享一个Bean
  • Spring中Bean的生命周期:

    • 单例对象:

      • 出生:当容器创建时对象就出生

      • 活着:只要容器还在,对象一直活着

      • 死亡:容器销毁,对象消亡(容器需正常触发destroy方法)

    • 多例对象:

      • 出生:当我们使用对象时创建

      • 活着:只要对象一直在使用过程中就一直活着

      • 死亡:当对象长时间不用,且没有别的对象引用时,由Java的垃圾回收器回收

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值