Spring学习笔记

1.反相控制(IoC Inversion of Control)/依赖注入(DI Depdendency Injection)

Martin Fowler在其文章中提出了“它们反转了哪方面的控制”的问题后,就为IoC起了一个更能说明这种模式特点的新名字"Depdendency Injection"

依赖注入的三种方式:

1)接口注入(interface Injection);

2)Set注入(setter Injection);

3)构造注入(constructor Injection);

 

2.使用哪种注入方式:

讨论这个问题其实就是在讨论:“要在对象建立时就准备好所有的资源,还是在对象建立好后,使用Set注入来设定”。

 

3.在Spring中,Bean可以被定义为两种部署模式的一种:singleton 或 no-singleton(prototype) ,默认为singleton模式 。

1)如果一个Bean被定义为singleton ,那么就只有一个共享的实例存在,所有对这个Bean的请求都会返回这个唯一的实例;

2)如果一个Bean被定义为no-singleton(prototype) ,那么对这个Bean的请求都会创建一个新的Bean实例,可以看成类似new的操作;

 

4.Bean的生命周期:定义初始化使用销毁

1)定义:通常使用配置文档;

2)初始化:

    <1>配置文档中使用init-method属性;

    在Bean中增加一个方法init,然后修改config.xml文档指定初始化方法;

    <2>实现org.springframework.bean.factory.InitializingBean接口(如果Bean实现了该接口,则它所有的必须的属性被BeanFactory设置后,会自动执行它的afterPropertiesSet()方法);

    Bean实现InitializingBean接口,增加一个afterPropertiesSet()方法完成初始化,然后修改config.xml;

    这两种方法效果是一样的,但第一种没有把Bean耦合于Spring,所以比较推荐第一种;

3)使用:

    <1>使用BeanWrapper

    <2>使用BeanFactory

    <3>使用ApplicationContext

4)销毁:

    <1>在配置文档中通过指定destroy-method属性来完成

    在Bean中增加一个方法cleanup(),用来完成销毁工作。然后修改config.xml文档指定销毁方法;

    <2>实现org.springframework.bean.factory.DisposableBean

    让Bean实现DisposableBean接口,增加一个distory()方法完成销毁,然后修改config.xml;

    这两种方法效果是一样的,但第一种没有把Bean耦合于Spring,所以比较推荐第一种;

 

5.用ref的属性指定依赖,有3种模式:local、Bean、parent

   local与Bean最为常用

   <1>相同之处,两者都可能用Bean的Id进行参考引用,都可以对同一个XML中的Bean进行参考引用。

   <2>不同之处,后者可以用Bean的name进行参考引用,还可以对不同的XML中的Bean进行参考引用。

 

6.Bean自动装配的5种模式

   Bean元素的autuwire属性来指定,共有5种模式,即byName、byType、constructor、autodetect和no

   显示的指定依赖,例如property和constructor-arg元素,总会覆盖自动装配。对于大型的应用不鼓励使用自动装配,因为它去除了参考依赖的透明性和清晰性。

 

7.Bean依赖检查的4种模式

  默认不检查依赖关系(借助依赖检查来实现查看Bean的每个属性是否都设定完成的功能)。使用Bean元素的dependency-check属性来指定Bean的依赖检查共有4种模式:simple、object、all、none

 

8.集合(ex:List(list)、Set(set)、Map(map)、Properties(props)的注入方式:先把要注入的信息注入到集合中,然后再把集合注入到相关Bean中。

 

9.管理Bean

  分别使用BeanWrapper、BeanFactory、ApplicationContext管理Bean。

  BeanWrapper封装了Bean的一个行为,提供了设置了获得属性值的功能。通过BeanWrapper可以获得Bean的属性描述、查询只读和可写属性。

  BeanFactory实际上是实例化、配置和管理众多Bean的容器。这些Bean会彼此合作,从来彼此产生依赖。

  ApplicationContext建立在BeanFactory之上,并增加了其它功能,例如对国际化的支持、获取资源和事件传递等。ApplicationContext是BeanFactory的完全超集。

  三种比较:BeanWrapper其实没有用到Spring配置文件,而且只能对单个Bean进行设定。常用的是BeanFactory和ApplicationContext。

 

10.ApplicationContext的更强功能(在BeanFactory的基本功能之外的其他功能)

   

posted on 2016-01-13 16:53  ゞWXXoοО  阅读(194)  评论(0编辑  收藏  举报