Spring如何装配Bean
1,首先要搞清楚Spring中如何配置bean。众所周知,Spring最基本的方法是利用XML文件来配置bean的,比如声明一个bean语法:
id是这个bean的标识,在XML中注入bean就会用到这个id;class指定一个具体的bean类
2,明白了bean的配置和声明,还有很重要的一点:在Spring中,定义一个bean类之前一般首先会定义一个接口,然后该bean实现该接口,在其他的bean中,使用接口来定义成员变量,以便实现多态性,比如:
在《Spring in action》给出的例子中,首先定义了一个Poem接口,这个有一个recite方法
然后在poeticjuggler类中,用此接口定义了一个成员变量Poem:
接下来,只要是实现了Poem接口的类都可以注入到poeticjuggler类中,比如下面这个类:
这就很好的实现了多态性。
3,当然最重要的不是声明bean的方法,而是如何注入bean的方法了:
·构造函数注入:
注入简单的值:
注入一个对象:
4,工厂方法创建bean:
工厂方法的特征:某个类不提供public的构造函数,而是将构造函数设置为private的,然后提供另一个static的getInstance方法返回类的一个实例。
一般的bean,都会有默认的构造方法,如果没有指明在创建该bean对象时使用的方法,则系统使用默认构造函数。在没有public构造函数的bean中,使用factory-method属性来制定工厂方法来创建bean
5,bean的作用域:
默认bean的作用域是singleton的,也就是调用getBean方法或者通过装配得到的bean都是同一个bean,可以通过scope属性设置:
scope所有属性:
6,初始化和销毁bean:
为单个bean指定初始化和销毁函数:
为所有的bean指定初始化和销毁方法:
7、注入bean属性:一般bean的每个属性都会为其定义相应的get和set函数。通过get和set函数可以为属性注入值
注入简单值:
注入外部bean(已经在XML中声明了saxophone的bean):
注入内部bean:
通过setter注入内部bean
通过constructor方法注入内部bean:
8、使用Spring的命名空间p装配属性:
首先声明使用命名空间:
然后装配属性:
9、装配集合
在bean中定义一个集合的属性:
在XML中配置:
list:
另外几种:
set:
map:
property:
10、装配空值
11、使用表达式装配,即SqEL语言的运用:
使用#{}定界符括起来的表达式
装配字面值:
引用bean:
引用bean的属性值:
引用bean的方法:
为了避免空指针,可以用空指针安全存取器:
操作类:
各种逻辑操作:
条件表达式
12,投影集合
属性筛选: