《中关村北大青鸟:实例讲解自动装配Spring》.doc
文本预览下载声明
中关村北大青鸟:实例讲解自动装配Sprin
如何自动装配sping?中关村北大青鸟采用构造函数注入,以及setter方法注入都需要写大量的XML配置文件,这时可以采用另一种方式,就是自动装,由Spring来给我们自动装配我们的Bean.
Spring提供了四种自动装配类型
1:ByName 采用这种方式时给属性自动注入值时,会根据Bean里的setXXX中的XXX去搜寻有没有id=XXX的Bean,有的话,将其自动注入,没有的话,就表示setXXX里要装入属性没有装配值。
2:ByType 采用这种方式给属性自动注入值时,会根据Bean里的setXXX中的参数类型来搜寻配置文件中的Bean定义,如果发现了一个,就自动将其注入,否则如果有0个这个属性没有被装配,如果有多个,则会抛出异常。
3:constructor 这种方式的注入与ByType其实没什么区别,无非是将ByType移入到了构造函数中,这种方式下,构造函数是自动注入的,在构造对象时,会自动根据构 造函数的参数类型搜寻Bean,如果有一个合适的,则成功,一个没有,则失败,有多个,则会抛出异常。
4:autodetect 自动检测方式,会采用如下流程,先按照constructor方式,再按照ByType方式。
例子源代码如下
例子一个Java工程师从一个网站上买东本
一个普通的JavaBean[java]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 interface Engineer{
Object buyApple();
}
public class JavaEngineer implements Engineer{
private String name;
private Website ws;
public JavaEngineer(String name){
=name;
}
public void setWebsite(Website ws){
this.ws=ws;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return super.toString();
}
public Object buyApple(){
System.out.print(工程师+name);
return ws.buyApple();
}
}
interface Engineer{
Object buyApple();
}
public class JavaEngineer implements Engineer{
private String name;
private Website ws;
public JavaEngineer(String name){
=name;
}
public void setWebsite(Website ws){
this.ws=ws;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return super.toString();
}
public Object buyApple(){
System.out.print(工程师+name);
return ws.buyApple();
}
} 这个网站假设是淘宝网:
[java]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 interface Website{
Object buyApple();
}
public class TaobaoWebsite implements Website {
public TaobaoWebsite()
{
}
public Object buyApple()
{
System.out.println(购买了一个苹果);
return new Object();
}
}
interfa
显示全部