概要:Spring揭秘的笔记。
不要只将Spring看作是一个Ioc容器,也不要只将Spring与AOP挂钩,Spring提供的远比这些东西要多得多。
Ioc:
提到Spring的Ioc,一般的书籍和文章从对象解耦的角度来阐述,作者从对象绑定的角度来阐述。
Ioc的三种依赖方式:
1。构造方式注入。优点是对象在构造完成之后,即已进入就绪状态,可以马上使用。缺点就是,当依赖对象比较多得时候,构造方法的参数列表会比较长。而通过反射构造对象的时候,对相同类型的参数的处理会比较困难,维护和使用上也比较麻烦。而且在Java中,构造方法无法被继承,无法设置默认值。对于非必须的依赖处理,可能需要引入多个构造方法,而参数数量的变动可能造成维护上的不便。
2。setter方式注入。setter方法可以被继承,允许设置默认值,而且有良好的IDE支持。缺点当然就是对象无法在构造完成后马上进入就绪状态。
3。接口方式注入。从注入方式的使用上来说,接口注入是现在不甚提倡的一种方式,基本处于“退役状态”。因为它强调被注入对象实现不必要的接口,带有侵入性。而构造方式注入和setter方式注入则不需要如此。
Bean的scope:
singleton,prototype。
request,session,global session(只能在Web中应用)
1.singletion:
对象实例数量。singletion类型的bean定义,在一个容器中只能存在一个共享实例,所有对该类型bean的依赖都引用这一单一实例。
对象存活时间。singletion类型的bean定义,从容器启动,到它第一次被请求而实例化开始,只要容器不销毁或者退出,该类型bean的单一实例就会一直存活。
2.prototype:
Bean的实例化:
Spring容器将对其所管理的对象全部给予统一的生命周期管理,这些被管理的对象完全摆脱了原来那种“new 完后被使用,脱离作用域后即被回收”的命运。