ゞ沉默是金ゞ
鱼离不开水,但是没有说不离开哪滴水.
BlogJava
首页
新随笔
新文章
联系
聚合
管理
posts - 98,comments - 104,trackbacks - 0
<
2009年4月
>
日
一
二
三
四
五
六
29
30
31
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
1
2
3
4
5
6
7
8
9
常用链接
我的随笔
我的文章
我的评论
我的参与
最新评论
留言簿
(3)
给我留言
查看公开留言
查看私人留言
随笔分类
Ant
Broker(1)
DB(8)
EJB(2)
eXtreme(7)
Hibernate
HTTP(6)
Java EE(8)
Java SE(31)
Jrules
Maven
Spring
Spring基础(1)
Struts
webservice(2)
其他收集(6)
性能测试(1)
搜索引擎
面试相关
随笔档案
2012年12月 (1)
2012年11月 (1)
2012年8月 (16)
2012年7月 (6)
2012年6月 (11)
2011年3月 (1)
2010年12月 (1)
2010年11月 (2)
2010年8月 (1)
2010年7月 (3)
2010年5月 (1)
2010年1月 (1)
2009年12月 (3)
2009年11月 (2)
2009年8月 (1)
2009年6月 (4)
2009年5月 (1)
2009年4月 (1)
2009年3月 (6)
2009年2月 (3)
2008年12月 (4)
文章分类
EJB(1)
代码收集
实用脚本
文章档案
2012年6月 (2)
2012年1月 (1)
2011年8月 (1)
2009年11月 (1)
2009年3月 (1)
2009年2月 (2)
搜索
最新评论
1. re: How to Create Client/Server Keystores using Java Keytool
Shawn?
--Freud
2. re: HTTP/1.1 Cache-Control的理解
这是网页代码,还是IIS 代码
--marmoglass
3. re: How To Avoid javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated Problem Using Apache HttpClient
评论内容较长,点击标题查看
--dashi99
4. re: How To Avoid javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated Problem Using Apache HttpClient
评论内容较长,点击标题查看
--shigangxing
5. re: Part 12: java.util.concurrent : SingleThreadPool Example
评论内容较长,点击标题查看
--NotNolyJava
阅读排行榜
1. HTTP/1.1 Cache-Control的理解(10085)
2. MYSQL 连接数据库命令收藏(8609)
3. 什么是RFC?(6594)
4. can not be represented as java.sql.Timestamp(5938)
5. How To Avoid javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated Problem Using Apache HttpClient(3622)
评论排行榜
1. Java应用基础:网友精选25个Java试题分享(18)
2. 踏实与成功(11)
3. Eclipse中10个比较有用的快捷键组合(转)(7)
4. 摘:一个Java程序员应该掌握的10项技能(6)
5. Java获取客户端真实IP地址的两种方法(5)
Spring自动装配的学习
在xml配置文件中,
autowire
有6种类型,可以在<bean/>元素中使用
autowire
属性指定:
模式 说明
no 不使用自动装配,必须通过ref元素指定依赖,默认设置。
byName 根据属性名自动装配。此选项将检查容器并根据名字查找与
属性完全一致的bean,并将其与属性自动装配。
byType 如果容器中存在一个与指定属性类型相同的bean,那么将与
该属性自动装配;如果存在多个该类型bean,那么抛出异
常,并指出不能使用byType方式进行自动装配;如果没有找
到相匹配的bean,则什么事都不发生,也可以通过设置
dependency
-
check
=
"
objects
"
让Spring抛出异常。
constructor 与byType方式类似,不同之处在于它应用于构造器参数。如
果容器中没有找到与构造器参数类型一致的bean,那么抛出
异常。
autodetect 通过bean类的自省机制(introspection)来决定是使用
constructor还是byType方式进行自动装配。如果发现默认的
构造器,那么将使用byType方式。
default
看代码:
Computer.java
package
com.redoffice;
public
class
Computer
{
private
Host host;
private
Display display;
public
Computer()
{
}
public
Computer(Host host, Display display)
{
super
();
this
.host
=
host;
this
.display
=
display;
}
public
void
run()
{
System.out.println();
System.out.print(
"
"
+
host.run()
+
"
,
"
);
System.out.println(display.run());
}
public
Host getHost()
{
return
host;
}
public
void
setHost(Host host)
{
this
.host
=
host;
}
public
Display getDisplay()
{
return
display;
}
public
void
setDisplay(Display display)
{
this
.display
=
display;
}
}
Host.java
package
com.redoffice;
public
class
Host
{
public
String run()
{
return
"
我是主机,正在运行!
"
;
}
}
Display.java
package
com.redoffice;
public
class
Display
{
public
String run()
{
return
"
我是显示器,正在运行!
"
;
}
}
TestMain.java
package
com.redoffice;
import
org.apache.commons.logging.Log;
import
org.apache.commons.logging.LogFactory;
import
org.apache.log4j.PropertyConfigurator;
import
org.springframework.context.ApplicationContext;
import
org.springframework.context.support.ClassPathXmlApplicationContext;
public
class
TestMain
{
private
static
Log log
=
LogFactory.getLog(TestMain.
class
);
public
static
void
main(String[] args)
{
PropertyConfigurator.configure(
"
bin/log4j.properties
"
);
log.debug(
"
entering main method
"
);
ApplicationContext ac
=
new
ClassPathXmlApplicationContext(
"
applicationContext.xml
"
);
//
byName
Computer computer1
=
(Computer)ac.getBean(
"
computer1
"
);
System.out.println(
"
autowire=\
"
byName\
"
:
"
);
computer1.run();
//
byType
Computer computer2
=
(Computer)ac.getBean(
"
computer2
"
);
System.out.println(
"
autowire=\
"
byType\
"
:
"
);
computer2.run();
//
default
Computer computer3
=
(Computer)ac.getBean(
"
computer3
"
);
System.out.println(
"
autowire=\
"
default
\
"
:
"
);
computer3.run();
//
autodetect
Computer computer4
=
(Computer)ac.getBean(
"
computer4
"
);
System.out.println(
"
autowire=\
"
autodetect\
"
:
"
);
computer4.run();
//
constructor
Computer computer5
=
(Computer)ac.getBean(
"
computer5
"
);
System.out.println(
"
autowire=\
"
constructor\
"
:
"
);
computer5.run();
//
no
Computer computer6
=
(Computer)ac.getBean(
"
computer6
"
);
System.out.println(
"
autowire=\
"
no\
"
:
"
);
computer6.run();
log.debug(
"
leaving main method
"
);
}
}
applicationContext.xml
<?
xml version
=
"
1.0
"
encoding
=
"
UTF-8
"
?>
<
beans xmlns
=
"
http://www.springframework.org/schema/beans
"
xmlns:xsi
=
"
http://www.w3.org/2001/XMLSchema-instance
"
xsi:schemaLocation
=
"
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
"
default
-
autowire
=
"
autodetect
"
>
<
bean id
=
"
host
"
name
=
"
host
"
class
=
"
com.redoffice.Host
"
></
bean
>
<
bean id
=
"
display
"
name
=
"
display
"
class
=
"
com.redoffice.Display
"
></
bean
>
<!--
autowire有no,constructor,byName,byType,
default
,autodetect几种状况
-->
<
bean id
=
"
computer1
"
class
=
"
com.redoffice.Computer
"
autowire
=
"
byName
"
></
bean
>
<
bean id
=
"
computer2
"
class
=
"
com.redoffice.Computer
"
autowire
=
"
byType
"
></
bean
>
<
bean id
=
"
computer3
"
class
=
"
com.redoffice.Computer
"
autowire
=
"
default
"
></
bean
>
<
bean id
=
"
computer4
"
class
=
"
com.redoffice.Computer
"
autowire
=
"
autodetect
"
></
bean
>
<!--
在Computer类中必须有一个无参和有参的构造函数,否则报错
-->
<
bean id
=
"
computer5
"
class
=
"
com.redoffice.Computer
"
autowire
=
"
constructor
"
>
<
constructor
-
arg index
=
"
0
"
>
<
ref bean
=
"
host
"
/>
</
constructor
-
arg
>
<
constructor
-
arg index
=
"
1
"
>
<
ref bean
=
"
display
"
/>
</
constructor
-
arg
>
</
bean
>
<
bean id
=
"
computer6
"
class
=
"
com.redoffice.Computer
"
autowire
=
"
no
"
>
<
constructor
-
arg index
=
"
0
"
>
<
ref bean
=
"
host
"
/>
</
constructor
-
arg
>
<
constructor
-
arg index
=
"
1
"
>
<
ref bean
=
"
display
"
/>
</
constructor
-
arg
>
</
bean
>
</
beans
>
希望有什么不对的地方多多指教。
posted on 2009-04-03 10:28
ゞ沉默是金ゞ
阅读(1699)
评论(4)
编辑
收藏
所属分类:
Spring基础
FeedBack:
#
re: Spring自动装配的学习
2009-04-03 10:35 |
asiawang
自动装配 还是不用为好,会产生不可预知的错误!
回复
更多评论
#
re: Spring自动装配的学习
2009-04-03 11:41 |
.........
是啊.
回复
更多评论
#
re: Spring自动装配的学习
2009-04-04 18:03 |
Robin's Java World
@asiawang
我们在项目里用得蛮好的呀,不过最好只用byName方式。
回复
更多评论
#
re: Spring自动装配的学习[未登录]
2010-08-22 13:10 |
Sam
写的简洁易懂。
其实第五点,类没有显式写出构造函数的话,java不会再创造默认构造函数。所以你必须写明无参构造函数。
很有用处
回复
更多评论
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理