﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-记忆好很大程度决定能力!-文章分类-spring</title><link>http://www.blogjava.net/microlab4321/category/24782.html</link><description>适时总结是一种很好的彌补方法!</description><language>zh-cn</language><lastBuildDate>Wed, 15 Aug 2007 20:47:08 GMT</lastBuildDate><pubDate>Wed, 15 Aug 2007 20:47:08 GMT</pubDate><ttl>60</ttl><item><title>spring中bean的高级属性之list, set, map以及props元素(含举例) (转)</title><link>http://www.blogjava.net/microlab4321/articles/136424.html</link><dc:creator>冬天出走的猪</dc:creator><author>冬天出走的猪</author><pubDate>Mon, 13 Aug 2007 08:05:00 GMT</pubDate><guid>http://www.blogjava.net/microlab4321/articles/136424.html</guid><wfw:comment>http://www.blogjava.net/microlab4321/comments/136424.html</wfw:comment><comments>http://www.blogjava.net/microlab4321/articles/136424.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/microlab4321/comments/commentRss/136424.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/microlab4321/services/trackbacks/136424.html</trackback:ping><description><![CDATA[&nbsp;list, set, map和props元素分别用来设置类型为List，Set，Map和Propertis的属性值。分别用来为bean传入集合值。<br>&nbsp;&nbsp; 对应的spring的配置文件举例如下：
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top> <span style="COLOR: #0000ff">&lt;?</span> <span style="COLOR: #ff00ff">xml&nbsp;version="1.0"&nbsp;encoding="gb2312"</span> <span style="COLOR: #0000ff">?&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top> </span><span style="COLOR: #0000ff">&lt;!</span> <span style="COLOR: #ff00ff">DOCTYPE&nbsp;beans&nbsp;PUBLIC&nbsp;"-//SPRING//DTD&nbsp;BEAN//EN"<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;"http://www.springframework.org/dtd/spring-beans.dtd"</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top> <br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top> </span><span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">beans</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top> <br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">bean&nbsp;</span> <span style="COLOR: #ff0000">id</span> <span style="COLOR: #0000ff">="chinese"</span> <span style="COLOR: #ff0000">&nbsp;class</span> <span style="COLOR: #0000ff">="Chinese"</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">property&nbsp;</span> <span style="COLOR: #ff0000">name</span> <span style="COLOR: #0000ff">="friends"</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">list</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000">张三</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000">李四</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000">王五</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">list</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">property</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">property&nbsp;</span> <span style="COLOR: #ff0000">name</span> <span style="COLOR: #0000ff">="score"</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">map</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">entry&nbsp;</span> <span style="COLOR: #ff0000">key</span> <span style="COLOR: #0000ff">="数学"</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000">60</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">entry</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">entry&nbsp;</span> <span style="COLOR: #ff0000">key</span> <span style="COLOR: #0000ff">="英语"</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000">70</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">entry</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">entry&nbsp;</span> <span style="COLOR: #ff0000">key</span> <span style="COLOR: #0000ff">="语文"</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000">80</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">entry</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">entry&nbsp;</span> <span style="COLOR: #ff0000">key</span> <span style="COLOR: #0000ff">="物理"</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000">90</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">entry</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">entry&nbsp;</span> <span style="COLOR: #ff0000">key</span> <span style="COLOR: #0000ff">="化学"</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000">95</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">entry</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">map</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">property</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">property&nbsp;</span> <span style="COLOR: #ff0000">name</span> <span style="COLOR: #0000ff">="basicInfo"</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">props</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">prop&nbsp;</span> <span style="COLOR: #ff0000">key</span> <span style="COLOR: #0000ff">="身高"</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000">165</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">prop</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">prop&nbsp;</span> <span style="COLOR: #ff0000">key</span> <span style="COLOR: #0000ff">="体重"</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000">45kg</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">prop</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">prop&nbsp;</span> <span style="COLOR: #ff0000">key</span> <span style="COLOR: #0000ff">="学历"</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000">大学本科</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">prop</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">props</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">property</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">property&nbsp;</span> <span style="COLOR: #ff0000">name</span> <span style="COLOR: #0000ff">="interest"</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">set</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000">唱歌</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000">跳舞</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000">书法</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">set</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">property</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top> <br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top> </span><span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">bean</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top> <br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top> </span><span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">beans</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top> <br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top> </span></div>
<p><br>&nbsp; 对应的java类为:</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id=Codehighlighter1_39_247_Open_Image onclick="this.style.display='none'; Codehighlighter1_39_247_Open_Text.style.display='none'; Codehighlighter1_39_247_Closed_Image.style.display='inline'; Codehighlighter1_39_247_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top> <img id=Codehighlighter1_39_247_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_39_247_Closed_Text.style.display='none'; Codehighlighter1_39_247_Open_Image.style.display='inline'; Codehighlighter1_39_247_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align=top> <span style="COLOR: #0000ff">public</span> <span style="COLOR: #000000">&nbsp;</span> <span style="COLOR: #0000ff">class</span> <span style="COLOR: #000000">&nbsp;Chinese&nbsp;</span> <span style="COLOR: #0000ff">implements</span> <span style="COLOR: #000000">&nbsp;People&nbsp;</span> <span id=Codehighlighter1_39_247_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"> </span><span id=Codehighlighter1_39_247_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">private</span> <span style="COLOR: #000000">&nbsp;List&nbsp;friends&nbsp;</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">&nbsp;</span> <span style="COLOR: #0000ff">new</span> <span style="COLOR: #000000">&nbsp;ArrayList();<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">private</span> <span style="COLOR: #000000">&nbsp;Map&nbsp;score&nbsp;</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">&nbsp;</span> <span style="COLOR: #0000ff">new</span> <span style="COLOR: #000000">&nbsp;HashMap();<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">private</span> <span style="COLOR: #000000">&nbsp;Properties&nbsp;basicInfo&nbsp;</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">&nbsp;</span> <span style="COLOR: #0000ff">new</span> <span style="COLOR: #000000">&nbsp;Properties();<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">private</span> <span style="COLOR: #000000">&nbsp;Set&nbsp;interest&nbsp;</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">&nbsp;</span> <span style="COLOR: #0000ff">new</span> <span style="COLOR: #000000">&nbsp;HashSet();<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">省略对应set方法</span> <span style="COLOR: #008000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top> </span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<img src="http://www.blogjava.net/Images/dot.gif"><img src="http://www.blogjava.net/Images/dot.gif">.<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span> </span></div>
<img src ="http://www.blogjava.net/microlab4321/aggbug/136424.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/microlab4321/" target="_blank">冬天出走的猪</a> 2007-08-13 16:05 <a href="http://www.blogjava.net/microlab4321/articles/136424.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>spring中bean的高级属性之list, set, map以及props元素(含举例) (转)</title><link>http://www.blogjava.net/microlab4321/articles/136425.html</link><dc:creator>冬天出走的猪</dc:creator><author>冬天出走的猪</author><pubDate>Mon, 13 Aug 2007 08:05:00 GMT</pubDate><guid>http://www.blogjava.net/microlab4321/articles/136425.html</guid><wfw:comment>http://www.blogjava.net/microlab4321/comments/136425.html</wfw:comment><comments>http://www.blogjava.net/microlab4321/articles/136425.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/microlab4321/comments/commentRss/136425.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/microlab4321/services/trackbacks/136425.html</trackback:ping><description><![CDATA[&nbsp;list, set, map和props元素分别用来设置类型为List，Set，Map和Propertis的属性值。分别用来为bean传入集合值。<br>&nbsp;&nbsp; 对应的spring的配置文件举例如下：
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top> <span style="COLOR: #0000ff">&lt;?</span> <span style="COLOR: #ff00ff">xml&nbsp;version="1.0"&nbsp;encoding="gb2312"</span> <span style="COLOR: #0000ff">?&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top> </span><span style="COLOR: #0000ff">&lt;!</span> <span style="COLOR: #ff00ff">DOCTYPE&nbsp;beans&nbsp;PUBLIC&nbsp;"-//SPRING//DTD&nbsp;BEAN//EN"<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;"http://www.springframework.org/dtd/spring-beans.dtd"</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top> <br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top> </span><span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">beans</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top> <br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">bean&nbsp;</span> <span style="COLOR: #ff0000">id</span> <span style="COLOR: #0000ff">="chinese"</span> <span style="COLOR: #ff0000">&nbsp;class</span> <span style="COLOR: #0000ff">="Chinese"</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">property&nbsp;</span> <span style="COLOR: #ff0000">name</span> <span style="COLOR: #0000ff">="friends"</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">list</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000">张三</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000">李四</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000">王五</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">list</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">property</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">property&nbsp;</span> <span style="COLOR: #ff0000">name</span> <span style="COLOR: #0000ff">="score"</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">map</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">entry&nbsp;</span> <span style="COLOR: #ff0000">key</span> <span style="COLOR: #0000ff">="数学"</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000">60</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">entry</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">entry&nbsp;</span> <span style="COLOR: #ff0000">key</span> <span style="COLOR: #0000ff">="英语"</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000">70</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">entry</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">entry&nbsp;</span> <span style="COLOR: #ff0000">key</span> <span style="COLOR: #0000ff">="语文"</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000">80</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">entry</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">entry&nbsp;</span> <span style="COLOR: #ff0000">key</span> <span style="COLOR: #0000ff">="物理"</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000">90</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">entry</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">entry&nbsp;</span> <span style="COLOR: #ff0000">key</span> <span style="COLOR: #0000ff">="化学"</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000">95</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">entry</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">map</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">property</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">property&nbsp;</span> <span style="COLOR: #ff0000">name</span> <span style="COLOR: #0000ff">="basicInfo"</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">props</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">prop&nbsp;</span> <span style="COLOR: #ff0000">key</span> <span style="COLOR: #0000ff">="身高"</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000">165</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">prop</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">prop&nbsp;</span> <span style="COLOR: #ff0000">key</span> <span style="COLOR: #0000ff">="体重"</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000">45kg</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">prop</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">prop&nbsp;</span> <span style="COLOR: #ff0000">key</span> <span style="COLOR: #0000ff">="学历"</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000">大学本科</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">prop</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">props</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">property</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">property&nbsp;</span> <span style="COLOR: #ff0000">name</span> <span style="COLOR: #0000ff">="interest"</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">set</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000">唱歌</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000">跳舞</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000">书法</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">value</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">set</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">property</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top> <br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top> </span><span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">bean</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top> <br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top> </span><span style="COLOR: #0000ff">&lt;/</span> <span style="COLOR: #800000">beans</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top> <br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top> </span></div>
<p><br>&nbsp; 对应的java类为:</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id=Codehighlighter1_39_247_Open_Image onclick="this.style.display='none'; Codehighlighter1_39_247_Open_Text.style.display='none'; Codehighlighter1_39_247_Closed_Image.style.display='inline'; Codehighlighter1_39_247_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top> <img id=Codehighlighter1_39_247_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_39_247_Closed_Text.style.display='none'; Codehighlighter1_39_247_Open_Image.style.display='inline'; Codehighlighter1_39_247_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align=top> <span style="COLOR: #0000ff">public</span> <span style="COLOR: #000000">&nbsp;</span> <span style="COLOR: #0000ff">class</span> <span style="COLOR: #000000">&nbsp;Chinese&nbsp;</span> <span style="COLOR: #0000ff">implements</span> <span style="COLOR: #000000">&nbsp;People&nbsp;</span> <span id=Codehighlighter1_39_247_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"> </span><span id=Codehighlighter1_39_247_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">private</span> <span style="COLOR: #000000">&nbsp;List&nbsp;friends&nbsp;</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">&nbsp;</span> <span style="COLOR: #0000ff">new</span> <span style="COLOR: #000000">&nbsp;ArrayList();<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">private</span> <span style="COLOR: #000000">&nbsp;Map&nbsp;score&nbsp;</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">&nbsp;</span> <span style="COLOR: #0000ff">new</span> <span style="COLOR: #000000">&nbsp;HashMap();<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">private</span> <span style="COLOR: #000000">&nbsp;Properties&nbsp;basicInfo&nbsp;</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">&nbsp;</span> <span style="COLOR: #0000ff">new</span> <span style="COLOR: #000000">&nbsp;Properties();<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #0000ff">private</span> <span style="COLOR: #000000">&nbsp;Set&nbsp;interest&nbsp;</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">&nbsp;</span> <span style="COLOR: #0000ff">new</span> <span style="COLOR: #000000">&nbsp;HashSet();<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">省略对应set方法</span> <span style="COLOR: #008000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top> </span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<img src="http://www.blogjava.net/Images/dot.gif"><img src="http://www.blogjava.net/Images/dot.gif">.<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span> </span></div>
<img src ="http://www.blogjava.net/microlab4321/aggbug/136425.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/microlab4321/" target="_blank">冬天出走的猪</a> 2007-08-13 16:05 <a href="http://www.blogjava.net/microlab4321/articles/136425.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>spring为ApplicationContext提供有三种实现（举例） (转)</title><link>http://www.blogjava.net/microlab4321/articles/136423.html</link><dc:creator>冬天出走的猪</dc:creator><author>冬天出走的猪</author><pubDate>Mon, 13 Aug 2007 08:04:00 GMT</pubDate><guid>http://www.blogjava.net/microlab4321/articles/136423.html</guid><wfw:comment>http://www.blogjava.net/microlab4321/comments/136423.html</wfw:comment><comments>http://www.blogjava.net/microlab4321/articles/136423.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/microlab4321/comments/commentRss/136423.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/microlab4321/services/trackbacks/136423.html</trackback:ping><description><![CDATA[spring为ApplicationContext提供的3种实现分别为：ClassPathXmlApplicationContext，FileSystemXmlApplicationContext和XmlWebApplicationContext，其中XmlWebApplicationContext是专为Web工程定制的。使用举例如下：<br>&nbsp;&nbsp;<strong>&nbsp;1. FileSystemXmlApplicationContext</strong><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; eg1. ApplicationContext ctx = new FileSystemXmlApplicationContext("bean.xml"); //加载单个配置文件<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; eg2. <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String[] locations = {"bean1.xml", "bean2.xml", "bean3.xml"};<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ApplicationContext ctx = new FileSystemXmlApplicationContext(locations ); //加载单个配置文件<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eg3.&nbsp;&nbsp;&nbsp;&nbsp;
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt; TEXT-ALIGN: left; mso-char-indent-count: 3.0; mso-layout-grid-align: none; mso-char-indent-size: 10.5pt" align=left><span lang=EN-US>&nbsp;&nbsp;&nbsp; ApplicationContext ctx =new FileSystemXmlApplicationContext("D:/project/bean.xml");//根据具体路径加载文件<br>&nbsp; <strong>2. ClassPathXmlApplicationContext</strong><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eg1.&nbsp;&nbsp;<span lang=EN-US>ApplicationContext ctx = new ClassPathXmlApplicationContext("bean.xml");</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eg2. <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String[] locations = {"bean1.xml", "bean2.xml", "bean3.xml"};<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ApplicationContext ctx = new ClassPathXmlApplication(locations);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 注：<font face=宋体>其中FileSystemXmlApplicationContext和ClassPathXmlApplicationContext与<span lang=EN-US>BeanFactory</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的</span><span lang=EN-US>xml</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件定位方式一样是基于路径的。<br><strong>&nbsp;3. XmlWebApplicationContext</strong><br>&nbsp;&nbsp;&nbsp;eg1. ServletContext&nbsp;servletContext =&nbsp;request.getSession().getServletContext();&nbsp;&nbsp;&nbsp;&nbsp;<br><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ApplicationContext ctx = Web<span lang=EN-US>ApplicationContextUtils.getWeb<span lang=EN-US>ApplicationContext(servletContext);</span></span></span></span></font></span></p>
<img src ="http://www.blogjava.net/microlab4321/aggbug/136423.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/microlab4321/" target="_blank">冬天出走的猪</a> 2007-08-13 16:04 <a href="http://www.blogjava.net/microlab4321/articles/136423.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用spring的AOP实现异常拦截 (转)</title><link>http://www.blogjava.net/microlab4321/articles/136422.html</link><dc:creator>冬天出走的猪</dc:creator><author>冬天出走的猪</author><pubDate>Mon, 13 Aug 2007 08:03:00 GMT</pubDate><guid>http://www.blogjava.net/microlab4321/articles/136422.html</guid><wfw:comment>http://www.blogjava.net/microlab4321/comments/136422.html</wfw:comment><comments>http://www.blogjava.net/microlab4321/articles/136422.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/microlab4321/comments/commentRss/136422.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/microlab4321/services/trackbacks/136422.html</trackback:ping><description><![CDATA[Spring支持四种拦截类型：目标方法调用前（before），目标方法调用后（after），目标方法调用前后（around），以及目标方法抛出异常（throw）。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 最近用到spring的AOP来实现异常拦截，用到了spring的ThrowsAdvice。ThrowsAdvice是一个标示接口，我们可以在类中定义一个或多个，来捕获定义异常通知的bean抛出的异常，并在抛出异常前执行相应的方法。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;我想大家可能都在项目中有过这样的需求，想在某种异常抛出时进行一些记录操作，例如记录错误日志到数据库或日志文件中，但把这些代码分布到项目各处不但难于管理，并且代码量巨大，用Spring的AOP来实现拦截不失为一个比较好的方法。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 下面，让我们来感受一下它的魅力吧。<br><strong>&nbsp;1.&nbsp;操作类TestBean</strong><br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id=Codehighlighter1_0_216_Open_Image onclick="this.style.display='none'; Codehighlighter1_0_216_Open_Text.style.display='none'; Codehighlighter1_0_216_Closed_Image.style.display='inline'; Codehighlighter1_0_216_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_0_216_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_0_216_Closed_Text.style.display='none'; Codehighlighter1_0_216_Open_Image.style.display='inline'; Codehighlighter1_0_216_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align=top><span id=Codehighlighter1_0_216_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**&nbsp;*/</span><span id=Codehighlighter1_0_216_Open_Text><span style="COLOR: #008000">/**</span><span style="COLOR: #008000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;*&nbsp;Copyright&nbsp;2007&nbsp;GuangZhou&nbsp;Cotel&nbsp;Co.&nbsp;Ltd.<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;*&nbsp;All&nbsp;right&nbsp;reserved.&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;*&nbsp;测试异常拦截的bean&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;*&nbsp;</span><span style="COLOR: #808080">@author</span><span style="COLOR: #008000">&nbsp;&lt;a&nbsp;href="mailto:xiexingxing1121@126.com"&gt;AmigoXie&lt;/a&gt;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;*&nbsp;</span><span style="COLOR: #808080">@version</span><span style="COLOR: #008000">&nbsp;1.0&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;*&nbsp;Creation&nbsp;date:&nbsp;2007-7-24&nbsp;-&nbsp;下午08:00:37<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&nbsp;</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_240_719_Open_Image onclick="this.style.display='none'; Codehighlighter1_240_719_Open_Text.style.display='none'; Codehighlighter1_240_719_Closed_Image.style.display='inline'; Codehighlighter1_240_719_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_240_719_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_240_719_Closed_Text.style.display='none'; Codehighlighter1_240_719_Open_Image.style.display='inline'; Codehighlighter1_240_719_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;TestBean&nbsp;</span><span id=Codehighlighter1_240_719_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_240_719_Open_Text><span style="COLOR: #000000">{<br><img id=Codehighlighter1_282_331_Open_Image onclick="this.style.display='none'; Codehighlighter1_282_331_Open_Text.style.display='none'; Codehighlighter1_282_331_Closed_Image.style.display='inline'; Codehighlighter1_282_331_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_282_331_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_282_331_Closed_Text.style.display='none'; Codehighlighter1_282_331_Open_Image.style.display='inline'; Codehighlighter1_282_331_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;method1()&nbsp;</span><span style="COLOR: #0000ff">throws</span><span style="COLOR: #000000">&nbsp;Exception&nbsp;</span><span id=Codehighlighter1_282_331_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_282_331_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">throw</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;Exception(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Exception&nbsp;happened!</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top><br><img id=Codehighlighter1_335_545_Open_Image onclick="this.style.display='none'; Codehighlighter1_335_545_Open_Text.style.display='none'; Codehighlighter1_335_545_Closed_Image.style.display='inline'; Codehighlighter1_335_545_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_335_545_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_335_545_Closed_Text.style.display='none'; Codehighlighter1_335_545_Open_Image.style.display='inline'; Codehighlighter1_335_545_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_335_545_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**&nbsp;*/</span><span id=Codehighlighter1_335_545_Open_Text><span style="COLOR: #008000">/**</span><span style="COLOR: #008000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;将字符串转换为整数.<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="COLOR: #808080">@param</span><span style="COLOR: #008000">&nbsp;number&nbsp;需转换的字符串<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="COLOR: #808080">@return</span><span style="COLOR: #008000">&nbsp;转换成的字符串<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="COLOR: #808080">@throws</span><span style="COLOR: #008000">&nbsp;NumberFormatException<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="COLOR: #808080">@author</span><span style="COLOR: #008000">&nbsp;&lt;a&nbsp;href="mailto:xiexingxing1121@126.com"&gt;AmigoXie&lt;/a&gt;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Creation&nbsp;date:&nbsp;2007-7-24&nbsp;-&nbsp;下午08:05:41<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_618_717_Open_Image onclick="this.style.display='none'; Codehighlighter1_618_717_Open_Text.style.display='none'; Codehighlighter1_618_717_Closed_Image.style.display='inline'; Codehighlighter1_618_717_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_618_717_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_618_717_Closed_Text.style.display='none'; Codehighlighter1_618_717_Open_Image.style.display='inline'; Codehighlighter1_618_717_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;changeToNumber(String&nbsp;number)&nbsp;</span><span style="COLOR: #0000ff">throws</span><span style="COLOR: #000000">&nbsp;NumberFormatException&nbsp;</span><span id=Codehighlighter1_618_717_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_618_717_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">当number为空或非数字时，将抛出NumberFormatException</span><span style="COLOR: #008000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;num&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;Integer.parseInt(number);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;num;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span></div>
<strong><br><br>2. 错误日志拦截类ExceptionAdvisor</strong><br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;org.springframework.aop.ThrowsAdvice;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;org.springframework.aop.framework.ProxyFactory;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;java.lang.reflect.Method;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><br><img id=Codehighlighter1_136_348_Open_Image onclick="this.style.display='none'; Codehighlighter1_136_348_Open_Text.style.display='none'; Codehighlighter1_136_348_Closed_Image.style.display='inline'; Codehighlighter1_136_348_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_136_348_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_136_348_Closed_Text.style.display='none'; Codehighlighter1_136_348_Open_Image.style.display='inline'; Codehighlighter1_136_348_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_136_348_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**&nbsp;*/</span><span id=Codehighlighter1_136_348_Open_Text><span style="COLOR: #008000">/**</span><span style="COLOR: #008000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;*&nbsp;Copyright&nbsp;2007&nbsp;GuangZhou&nbsp;Cotel&nbsp;Co.&nbsp;Ltd.<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;*&nbsp;All&nbsp;right&nbsp;reserved.&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;*&nbsp;异常拦截类.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;*&nbsp;</span><span style="COLOR: #808080">@author</span><span style="COLOR: #008000">&nbsp;&lt;a&nbsp;href="mailto:xiexingxing1121@126.com"&gt;AmigoXie&lt;/a&gt;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;*&nbsp;</span><span style="COLOR: #808080">@version</span><span style="COLOR: #008000">&nbsp;1.0&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;*&nbsp;Creation&nbsp;date:&nbsp;2007-7-24&nbsp;-&nbsp;下午08:12:25<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&nbsp;</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_404_2374_Open_Image onclick="this.style.display='none'; Codehighlighter1_404_2374_Open_Text.style.display='none'; Codehighlighter1_404_2374_Closed_Image.style.display='inline'; Codehighlighter1_404_2374_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_404_2374_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_404_2374_Closed_Text.style.display='none'; Codehighlighter1_404_2374_Open_Image.style.display='inline'; Codehighlighter1_404_2374_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;ExceptionAdvisor&nbsp;</span><span style="COLOR: #0000ff">implements</span><span style="COLOR: #000000">&nbsp;ThrowsAdvice&nbsp;</span><span id=Codehighlighter1_404_2374_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_404_2374_Open_Text><span style="COLOR: #000000">{<br><img id=Codehighlighter1_446_774_Open_Image onclick="this.style.display='none'; Codehighlighter1_446_774_Open_Text.style.display='none'; Codehighlighter1_446_774_Closed_Image.style.display='inline'; Codehighlighter1_446_774_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_446_774_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_446_774_Closed_Text.style.display='none'; Codehighlighter1_446_774_Open_Image.style.display='inline'; Codehighlighter1_446_774_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;main(String[]&nbsp;args)&nbsp;</span><span id=Codehighlighter1_446_774_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_446_774_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TestBean&nbsp;bean&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;TestBean();<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ProxyFactory&nbsp;pf&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;ProxyFactory();<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pf.setTarget(bean);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pf.addAdvice(</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;ExceptionAdvisor());<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TestBean&nbsp;proxy&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(TestBean)&nbsp;pf.getProxy();<br><img id=Codehighlighter1_636_660_Open_Image onclick="this.style.display='none'; Codehighlighter1_636_660_Open_Text.style.display='none'; Codehighlighter1_636_660_Closed_Image.style.display='inline'; Codehighlighter1_636_660_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_636_660_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_636_660_Closed_Text.style.display='none'; Codehighlighter1_636_660_Open_Image.style.display='inline'; Codehighlighter1_636_660_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000">&nbsp;</span><span id=Codehighlighter1_636_660_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_636_660_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;proxy.method1();<br><img id=Codehighlighter1_687_691_Open_Image onclick="this.style.display='none'; Codehighlighter1_687_691_Open_Text.style.display='none'; Codehighlighter1_687_691_Closed_Image.style.display='inline'; Codehighlighter1_687_691_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_687_691_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_687_691_Closed_Text.style.display='none'; Codehighlighter1_687_691_Open_Image.style.display='inline'; Codehighlighter1_687_691_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000">&nbsp;(Exception&nbsp;ignore)&nbsp;</span><span id=Codehighlighter1_687_691_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_687_691_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img id=Codehighlighter1_702_740_Open_Image onclick="this.style.display='none'; Codehighlighter1_702_740_Open_Text.style.display='none'; Codehighlighter1_702_740_Closed_Image.style.display='inline'; Codehighlighter1_702_740_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_702_740_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_702_740_Closed_Text.style.display='none'; Codehighlighter1_702_740_Open_Image.style.display='inline'; Codehighlighter1_702_740_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000">&nbsp;</span><span id=Codehighlighter1_702_740_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_702_740_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;proxy.changeToNumber(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">amigo</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img id=Codehighlighter1_767_771_Open_Image onclick="this.style.display='none'; Codehighlighter1_767_771_Open_Text.style.display='none'; Codehighlighter1_767_771_Closed_Image.style.display='inline'; Codehighlighter1_767_771_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_767_771_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_767_771_Closed_Text.style.display='none'; Codehighlighter1_767_771_Open_Image.style.display='inline'; Codehighlighter1_767_771_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000">&nbsp;(Exception&nbsp;ignore)&nbsp;</span><span id=Codehighlighter1_767_771_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_767_771_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top><br><img id=Codehighlighter1_778_995_Open_Image onclick="this.style.display='none'; Codehighlighter1_778_995_Open_Text.style.display='none'; Codehighlighter1_778_995_Closed_Image.style.display='inline'; Codehighlighter1_778_995_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_778_995_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_778_995_Closed_Text.style.display='none'; Codehighlighter1_778_995_Open_Image.style.display='inline'; Codehighlighter1_778_995_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_778_995_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**&nbsp;*/</span><span id=Codehighlighter1_778_995_Open_Text><span style="COLOR: #008000">/**</span><span style="COLOR: #008000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;对未知异常的处理.<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="COLOR: #808080">@param</span><span style="COLOR: #008000">&nbsp;method<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="COLOR: #808080">@param</span><span style="COLOR: #008000">&nbsp;args<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="COLOR: #808080">@param</span><span style="COLOR: #008000">&nbsp;target<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="COLOR: #808080">@param</span><span style="COLOR: #008000">&nbsp;ex<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="COLOR: #808080">@throws</span><span style="COLOR: #008000">&nbsp;Throwable<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="COLOR: #808080">@author</span><span style="COLOR: #008000">&nbsp;&lt;a&nbsp;href="mailto:xiexingxing1121@126.com"&gt;AmigoXie&lt;/a&gt;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Creation&nbsp;date:&nbsp;2007-7-24&nbsp;-&nbsp;下午03:35:02<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;afterThrowing(Method&nbsp;method,&nbsp;Object[]&nbsp;args,&nbsp;Object&nbsp;target,<br><img id=Codehighlighter1_1103_1558_Open_Image onclick="this.style.display='none'; Codehighlighter1_1103_1558_Open_Text.style.display='none'; Codehighlighter1_1103_1558_Closed_Image.style.display='inline'; Codehighlighter1_1103_1558_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_1103_1558_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1103_1558_Closed_Text.style.display='none'; Codehighlighter1_1103_1558_Open_Image.style.display='inline'; Codehighlighter1_1103_1558_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Exception&nbsp;ex)&nbsp;</span><span style="COLOR: #0000ff">throws</span><span style="COLOR: #000000">&nbsp;Throwable&nbsp;</span><span id=Codehighlighter1_1103_1558_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_1103_1558_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">*************************************</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Error&nbsp;happened&nbsp;in&nbsp;class:&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;target.getClass().getName());<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Error&nbsp;happened&nbsp;in&nbsp;method:&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;method.getName());<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img id=Codehighlighter1_1363_1420_Open_Image onclick="this.style.display='none'; Codehighlighter1_1363_1420_Open_Text.style.display='none'; Codehighlighter1_1363_1420_Closed_Image.style.display='inline'; Codehighlighter1_1363_1420_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_1363_1420_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1363_1420_Closed_Text.style.display='none'; Codehighlighter1_1363_1420_Open_Image.style.display='inline'; Codehighlighter1_1363_1420_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;i&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;args.length;&nbsp;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)&nbsp;</span><span id=Codehighlighter1_1363_1420_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_1363_1420_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">arg[</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;i&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">]:&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;args[i]);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Exception&nbsp;class:&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;ex.getClass().getName());<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">*************************************</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img id=Codehighlighter1_1563_1797_Open_Image onclick="this.style.display='none'; Codehighlighter1_1563_1797_Open_Text.style.display='none'; Codehighlighter1_1563_1797_Closed_Image.style.display='inline'; Codehighlighter1_1563_1797_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_1563_1797_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1563_1797_Closed_Text.style.display='none'; Codehighlighter1_1563_1797_Open_Image.style.display='inline'; Codehighlighter1_1563_1797_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_1563_1797_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**&nbsp;*/</span><span id=Codehighlighter1_1563_1797_Open_Text><span style="COLOR: #008000">/**</span><span style="COLOR: #008000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;对NullPointerException异常的处理<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="COLOR: #808080">@param</span><span style="COLOR: #008000">&nbsp;method<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="COLOR: #808080">@param</span><span style="COLOR: #008000">&nbsp;args<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="COLOR: #808080">@param</span><span style="COLOR: #008000">&nbsp;target<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="COLOR: #808080">@param</span><span style="COLOR: #008000">&nbsp;ex<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="COLOR: #808080">@throws</span><span style="COLOR: #008000">&nbsp;Throwable<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="COLOR: #808080">@author</span><span style="COLOR: #008000">&nbsp;&lt;a&nbsp;href="mailto:xiexingxing1121@126.com"&gt;AmigoXie&lt;/a&gt;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Creation&nbsp;date:&nbsp;2007-7-24&nbsp;-&nbsp;下午01:17:35<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;afterThrowing(Method&nbsp;method,&nbsp;Object[]&nbsp;args,&nbsp;Object&nbsp;target,<br><img id=Codehighlighter1_1916_2372_Open_Image onclick="this.style.display='none'; Codehighlighter1_1916_2372_Open_Text.style.display='none'; Codehighlighter1_1916_2372_Closed_Image.style.display='inline'; Codehighlighter1_1916_2372_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_1916_2372_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1916_2372_Closed_Text.style.display='none'; Codehighlighter1_1916_2372_Open_Image.style.display='inline'; Codehighlighter1_1916_2372_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NullPointerException&nbsp;ex)&nbsp;</span><span style="COLOR: #0000ff">throws</span><span style="COLOR: #000000">&nbsp;Throwable&nbsp;</span><span id=Codehighlighter1_1916_2372_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_1916_2372_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">*************************************</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Error&nbsp;happened&nbsp;in&nbsp;class:&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;target.getClass().getName());<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Error&nbsp;happened&nbsp;in&nbsp;method:&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;method.getName());<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img id=Codehighlighter1_2176_2234_Open_Image onclick="this.style.display='none'; Codehighlighter1_2176_2234_Open_Text.style.display='none'; Codehighlighter1_2176_2234_Closed_Image.style.display='inline'; Codehighlighter1_2176_2234_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_2176_2234_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_2176_2234_Closed_Text.style.display='none'; Codehighlighter1_2176_2234_Open_Image.style.display='inline'; Codehighlighter1_2176_2234_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;i&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;args.length;&nbsp;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)&nbsp;</span><span id=Codehighlighter1_2176_2234_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_2176_2234_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">args[</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;i&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">]:&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;args[i]);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Exception&nbsp;class:&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;ex.getClass().getName());<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">*************************************</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span></div>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 运行ExceptionAdvisor类后，结果如下：<br>&nbsp;&nbsp;&nbsp;&nbsp; ************************************<br>&nbsp;&nbsp;&nbsp;&nbsp; Error happened in class: TestBean<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Error happened in method: method1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Exception class: java.lang.Exception<br>&nbsp;&nbsp;&nbsp; *************************************<br>&nbsp;&nbsp;&nbsp; *************************************<br>&nbsp;&nbsp;&nbsp; Error happened in class: TestBean<br>&nbsp;&nbsp;&nbsp; Error happened in method: changeToNumber<br>&nbsp;&nbsp;&nbsp; arg[0]: amigo<br>&nbsp;&nbsp;&nbsp; Exception class: java.lang.NumberFormatException<br>&nbsp;&nbsp;&nbsp; *************************************<br><br>&nbsp;&nbsp;&nbsp; 在工程中，可将ExceptionAdvisor类作为bean定义，并指定要纳入其进行异常拦截的类。</p>
<img src ="http://www.blogjava.net/microlab4321/aggbug/136422.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/microlab4321/" target="_blank">冬天出走的猪</a> 2007-08-13 16:03 <a href="http://www.blogjava.net/microlab4321/articles/136422.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用 MyEclipse 开发 Spring 入门操作 </title><link>http://www.blogjava.net/microlab4321/articles/136352.html</link><dc:creator>冬天出走的猪</dc:creator><author>冬天出走的猪</author><pubDate>Mon, 13 Aug 2007 05:20:00 GMT</pubDate><guid>http://www.blogjava.net/microlab4321/articles/136352.html</guid><wfw:comment>http://www.blogjava.net/microlab4321/comments/136352.html</wfw:comment><comments>http://www.blogjava.net/microlab4321/articles/136352.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/microlab4321/comments/commentRss/136352.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/microlab4321/services/trackbacks/136352.html</trackback:ping><description><![CDATA[<p>今天介绍的第二个课题就是介绍 Spring 的快速开发, 说是快速开发, 其实能帮助的地方除了语法高亮和自动添加类库外也没多少东西了.</p>
<p>1. 新建普通 Java 项目 MySpringTest. 这个过程无需赘述了, 建议建项目的时候将 src 目录和 bin(或者classes)目录分开, 另外提示你切换透视图的时候一定要切换过去到 Java 透视图, 此时默认会在 Package Explorer 中选中刚才已经建好的 Java Project, 但是背景为灰色.<br>2. 首先单击一下左边的 Package Explorer 中新建的 MySpringTest 项目来使其高亮选中, 接着点击菜单项 MyEclipse -&gt; Add Spring Capabilities..., 接着会弹出对话框 Add Spring Capabilities 提示你设置当前项目的 Spring 属性.<br>对话框的第一页可以选择全部的 Spring 框架, 这是最保险的做法, 不过我们的例子只需要选中Spring 2.0 Core Libraries 就可以了. 点击 "Next" 继续.<br>第二页是 Add Spring bean configuration file. 保持默认值不变就可以了. 最后点击 Finish.<br>3. Spring 的开发没法自动生成 Bean, 这里大家只好手工来写了, 也很简单. 分别复制下面的三个代码, 然后在 MyEclipse src 目录上点击右键后选择菜单项 Paste 就可以生成 Java 类文件了.</p>
<p>public interface Action { <br>&nbsp; <br>&nbsp; public String execute(String str); <br>&nbsp;<br>} </p>
<p>public class UpperAction implements Action { <br>&nbsp; <br>&nbsp; private String message; <br>&nbsp; <br>&nbsp; public String getMessage() { <br>&nbsp;&nbsp; return message; <br>&nbsp; } <br>&nbsp;<br>&nbsp; public void setMessage(String string) { <br>&nbsp;&nbsp;&nbsp; message = string; <br>&nbsp; } <br>&nbsp;<br>&nbsp; public String execute(String str) { <br>&nbsp;&nbsp; return (getMessage() + str).toUpperCase(); <br>&nbsp; } <br>}</p>
<p>import org.springframework.context.ApplicationContext;<br>import org.springframework.context.support.ClassPathXmlApplicationContext;</p>
<p>public class TestAction {</p>
<p>&nbsp;public static void main(String[] args) {<br>&nbsp;&nbsp;ApplicationContext ctx = new ClassPathXmlApplicationContext(<br>&nbsp;&nbsp;&nbsp;&nbsp;"applicationContext.xml");<br>&nbsp;&nbsp;Action bean = (Action) ctx.getBean("theAction");<br>&nbsp;&nbsp;System.out.println(bean.execute("Rod"));<br>&nbsp;}<br>}</p>
<p>4. 双击左侧在第2步生成的 applicationContext.xml, 然后选择菜单项 Window -&gt; Show View -&gt; Other..., 在弹出的对话框中选择 MyEclipse Enterprise Workbench 节点下的 Spring Beans 子节点打开视图 Spring Beans. 此视图讲出现在主界面的右下侧.</p>
<p>5. 展开此视图中的 MySpringTest 父节点, 并选中 src/applicationContext.xml 子节点, 在此节点上点击右键并选择弹出菜单项中的 New Bean 来打开 Create a new Spring bean 对话框, 并按照下图输入对应的内容.<br>Bean Id: [theAction]<br>Bean class: [UpperAction]<br>接下来请单击一下 Tab 面板 Properties 并点击其中的 Add... 按钮, 在接下来弹出的 Property Wizard 对话框中按照下图输入/选择内容:<br>Name: [message]<br>Spring type: [value]<br>Type: [java.lang.String]<br>Value:[Hello_]<br>最后点击两次 Finish 按钮关闭所有向导对话框. 然后点击菜单 File -&gt; Save. 此时可以看到 applicationContext.xml 的内容如下所示:<br>&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br>&lt;beans<br>&nbsp;xmlns="<a href="http://www.springframework.org/schema/beans"><font color=#1a8bc8>http://www.springframework.org/schema/beans</font></a>"<br>&nbsp;xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance"><font color=#1a8bc8>http://www.w3.org/2001/XMLSchema-instance</font></a>"<br>&nbsp;xsi:schemaLocation="<a href="http://www.springframework.org/schema/beans"><font color=#1a8bc8>http://www.springframework.org/schema/beans</font></a> <a href="http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"><font color=#1a8bc8>http://www.springframework.org/schema/beans/spring-beans-2.0.xsd</font></a>"&gt;</p>
<p><br>&nbsp;&lt;bean id="theAction" class="UpperAction" abstract="false"<br>&nbsp;&nbsp;lazy-init="default" autowire="default" dependency-check="default"&gt;<br>&nbsp;&nbsp;&lt;property name="message"&gt;<br>&nbsp;&nbsp;&nbsp;&lt;value type="java.lang.String"&gt;Hello_&lt;/value&gt;<br>&nbsp;&nbsp;&lt;/property&gt;<br>&nbsp;&lt;/bean&gt;&lt;/beans&gt;<br>然后双击 Package Explorer 下 MySpringTest/src/TestAction.java 打开源代码, 然后点击菜单 Run -&gt; Run As -&gt; 1. Java Application, 如果没有错误的话将会出现如下的输入, 您的第一个 Hello Spring 运行成功了:<br>log4j:WARN No appenders could be found for logger (org.springframework.context.support.ClassPathXmlApplicationContext).<br>log4j:WARN Please initialize the log4j system properly.<br>HELLO_ROD</p>
<p>接着您就可以对着参考书继续创建类, 修改 applicationContext.xml 做更多的练习了.<br></p>
<p>开发整合 Hibernate 的关键操作点截图:<br>1. 在数据库浏览器中选择反向工程菜单;<br><br><img src="http://www.blogjava.net/images/blogjava_net/beansoft/24572/o_dbExplorer.jpg"></p>
<p>2. 对话框的选项说明</p>
<img src="http://www.blogjava.net/images/blogjava_net/beansoft/24572/o_hiber_spring_reverse.jpg">
<div class=postDesc>posted on 2007-08-02 07:47 <a href="http://www.blogjava.net/beansoft/"><font color=#1a8bc8>BeanSoft</font></a> 阅读(741) <a href="http://www.blogjava.net/beansoft/archive/2007/08/02/133893.html#Post"><font color=#1a8bc8>评论(3)</font></a> &nbsp;<a href="http://www.blogjava.net/beansoft/admin/EditPosts.aspx?postid=133893"><font color=#1a8bc8>编辑</font></a>&nbsp;<a href="http://www.blogjava.net/beansoft/AddToFavorite.aspx?id=133893"><font color=#1a8bc8>收藏</font></a> <a href="http://www.blogjava.net/beansoft/services/trackbacks/133893.aspx"><font color=#1a8bc8>引用</font></a> 所属分类: <a href="http://www.blogjava.net/beansoft/category/23350.html"><font color=#1a8bc8>Spring</font></a> </div>
<img height=1 src="http://www.blogjava.net/beansoft/aggbug/133893.html?webview=1" width=1> <!--
<rdf:rdf xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
<rdf:description
rdf:about="http://www.blogjava.net/beansoft/archive/2007/08/02/133893.html"
dc:identifier="http://www.blogjava.net/beansoft/archive/2007/08/02/133893.html"
dc:title="用 MyEclipse 开发 Spring 入门操作"
trackback:ping="http://www.blogjava.net/beansoft/services/trackbacks/133893.aspx" />
</rdf:rdf>
-->
<script type=text/javascript>
//<![cdata[
Sys.WebForms.PageRequestManager._initialize('AjaxHolder$scriptmanager1', document.getElementById('Form1'));
Sys.WebForms.PageRequestManager.getInstance()._updateControls(['tAjaxHolder$UpdatePanel1'], [], [], 90);
//]]&gt;
</script>
<div id=AjaxHolder_UpdatePanel1>夏昕 &lt;&lt;Spring 开发指南入门&gt;&gt;1 分钟上手教程视频(不带解说) <br><a href="http://www.blogjava.net/beansoft/archive/2007/05/09/116258.html" target=_new><font color=#1a8bc8>http://www.blogjava.net/beansoft/archive/2007/05/09/116258.html</font></a>&nbsp;&nbsp;</div>
<img src ="http://www.blogjava.net/microlab4321/aggbug/136352.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/microlab4321/" target="_blank">冬天出走的猪</a> 2007-08-13 13:20 <a href="http://www.blogjava.net/microlab4321/articles/136352.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring 重点个人小结 </title><link>http://www.blogjava.net/microlab4321/articles/136348.html</link><dc:creator>冬天出走的猪</dc:creator><author>冬天出走的猪</author><pubDate>Mon, 13 Aug 2007 05:18:00 GMT</pubDate><guid>http://www.blogjava.net/microlab4321/articles/136348.html</guid><wfw:comment>http://www.blogjava.net/microlab4321/comments/136348.html</wfw:comment><comments>http://www.blogjava.net/microlab4321/articles/136348.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/microlab4321/comments/commentRss/136348.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/microlab4321/services/trackbacks/136348.html</trackback:ping><description><![CDATA[<p>Spring 这么多内容该看哪些? 我就根据我的理解谈一些个人的观点, 仅供参考. 欢迎讨论.</p>
<p>首先学习 Spring 等框架应该本着简化程序员负担, 加快开发速度的原则来进行, 而不是把框架的知识点都给学习, 练习一遍. 另外用 Spring 的时候也要注意不要过渡依赖 Spring 框架, 注意它们的宣传语是: 无侵入, 轻量级. 所以, 除非必要, 千万不要让 Spring 侵入你的代码啊, 例如哪些 Aware 接口, 不也是变相的侵入了你的代码嘛. 还有不要为了 Spring 而 Spring, 明明一段代码用 new JavaBean().setUsername("xxx") 这样的方式非常简练, 你非要整出个 bean 的配置文件来, 纯属多此一举. 所以无侵入只是个相对概念, 代码写少了, 但是 bean.xml 配置文件和 Spring.jar 你不能丢吧, 所以你已经被 Spring 侵入了, 而且以后想换第二家公司来做个框架解析你这些 XML 文件都困难呢, 因为 Spring 本身并不是可替换或者热插拔的, 换句话说所有用 Spring 的代码都已经被绑定到了 Spring 框架上.&nbsp; 好了, 先说一下目前了解的 Spring 的主要应用场合.</p>
<p>1. 依赖注入, 主要是把一些需要经常修改的内容提取为 Bean, 也是尽量能不提取就不提取, 要不然到最后那个 bean.xml 增加到了几千行你也就不会觉得这时候有什么方便的地方了;</p>
<p>2. 整合 Hibernate, 这个可以说是最强大最实用的功能了, 也是为什么一提到 Spring 后面总是跟着 Hibernate 的原因. 在文档的 12.2. Hibernate 有相关的介绍. 例如看看下面的调用代码:</p>
<p>import java.io.IOException;</p>
<p>import org.springframework.context.ApplicationContext;<br>import org.springframework.context.support.ClassPathXmlApplicationContext;</p>
<p>import dao.Testuser;<br>import dao.TestuserDAO;</p>
<p>// 调用 Hibernate DAO<br>public class Test {</p>
<p>&nbsp;public static void main(String[] args) throws IOException {<br>&nbsp;&nbsp;ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");<br>&nbsp;&nbsp;TestuserDAO dao =(TestuserDAO)context.getBean("userDAO");<br>&nbsp;&nbsp;Testuser user = new Testuser();<br>//&nbsp;&nbsp;user.setxxx..., 设置值.<br>&nbsp;&nbsp;dao.save(user);<br>&nbsp;}</p>
<p>}</p>
<p><br>再看 DAO 的代码:</p>
<p>package dao;</p>
<p>import org.springframework.orm.hibernate3.support.HibernateDaoSupport;</p>
<p>/**<br>&nbsp;* Data access object (DAO) for domain model class Testuser.<br>&nbsp;*/</p>
<p>public class TestuserDAO extends HibernateDaoSupport {</p>
<p><br>&nbsp;public void save(Testuser transientInstance) {<br>&nbsp;&nbsp;getHibernateTemplate().save(transientInstance);<br>&nbsp;}</p>
<p>&nbsp;public void delete(Testuser persistentInstance) {<br>&nbsp;&nbsp;getHibernateTemplate().delete(persistentInstance);</p>
<p>&nbsp;}</p>
<p>}</p>
<p>是不是感觉简单到令人难以置信?&nbsp; 要保存的实体 POJO 也很简单:<br>package dao;</p>
<p>/**<br>&nbsp;* Testuser generated by MyEclipse Persistence Tools<br>&nbsp;*/</p>
<p>public class Testuser implements java.io.Serializable {</p>
<p>&nbsp;// Fields</p>
<p>&nbsp;private Integer id;</p>
<p>&nbsp;private String username;</p>
<p>&nbsp;private Integer age;<br>&nbsp;<br>&nbsp;getXXX();<br>&nbsp;setXXX();<br>}</p>
<p>然后我们看主要的配置文件 applicationContext.xml 的内容:<br>&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br>&lt;beans<br>&nbsp;xmlns="<a href="http://www.springframework.org/schema/beans"><font color=#1a8bc8>http://www.springframework.org/schema/beans</font></a>"<br>&nbsp;xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance"><font color=#1a8bc8>http://www.w3.org/2001/XMLSchema-instance</font></a>"<br>&nbsp;xsi:schemaLocation="<a href="http://www.springframework.org/schema/beans"><font color=#1a8bc8>http://www.springframework.org/schema/beans</font></a> <a href="http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"><font color=#1a8bc8>http://www.springframework.org/schema/beans/spring-beans-2.0.xsd</font></a>"&gt;</p>
<p>&nbsp;&lt;bean id="userDAO" class="dao.TestuserDAO"&gt;<br>&nbsp;&nbsp;&lt;property name="sessionFactory"&gt;<br>&nbsp;&nbsp;&nbsp;&lt;ref bean="hibernateSessionFactory" /&gt;<br>&nbsp;&nbsp;&lt;/property&gt;<br>&nbsp;&lt;/bean&gt;</p>
<p>&nbsp;&lt;bean id="hibernateSessionFactory"<br>&nbsp;&nbsp;class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"&gt;<br>&nbsp;&nbsp;&lt;property name="configLocation"<br>&nbsp;&nbsp;&nbsp;value="file:src/hibernate.cfg.xml"&gt;<br>&nbsp;&nbsp;&lt;/property&gt;<br>&nbsp;&lt;/bean&gt;</p>
<p>&lt;/beans&gt;</p>
<p>大家可以看到 DAO 的&nbsp; HibernateSessionFactory 完全是配置出来的, 不用我们写一行 Hibernate 初始化的代码, Spring 已经帮我们做好了一切. 完整的代码大家可以下载附件. 但是大家也请注意, 我们的代码这样做也是依赖了 Spring 的框架, 其实功能强大和不依赖具体的框架本身就是个谬论, 你不用(依赖)它的框架又怎么能用到它的强大的功能呢?</p>
<p>3. 使用 JDBCTemplate 简化普通的 JDBC 代码编写, 这个大家可以去看参考文档(官方的 Spring Framework 开发参考手册, 中英文均可) " 第 11 章 使用JDBC进行数据访问", 老师也介绍过了.</p>
<p>4. 整合 Struts, 也参考文档里的内容, 具体是 15.4. Struts., 让 Struts 的 Action 可以被注入内容.</p>
<p>5. AOP 功能, 我没用过, 只是听一些朋友介绍说他们用的有, 所以建议大家了解一下, 个人觉得挺难理解, 开发的时候也是完全依赖 Spring 的 API, 比较难做. AOP 是 Spring 后来加入的内容, 按照官方文档是"锦上添花的内容", 其实就是捆绑了自己的 AOP, 而 Spring 最核心的内容当属依赖注入功能.</p>
<p>6.&nbsp; 事务管理, 据说有一些人在用. 但是感觉开发起来挺费劲的, 不如 EJB 3 的标注来的简便. 不过你被绑在了 Spring 框架上, 一般就只好用它自己做的这些个功能了.</p>
<p>7. 其它的 Spring MVC 等内容, 都是可选项, 具体来说开发工具支持上并不如 Struts 来的那么直接好用.</p>
<p>至于 Spring 的缺点:<br>1. 不支持分布式访问,分布式事务和集群, 这些是 EJB 3 的优点, 但是 Spring 目前还不支持;<br>2. 配置使用 XML 文件, 如果文件内容很多的话对维护的人来说是个负担;<br>3. 提供 Spring 容器的只有一家公司(Interface21), 换句话说它是非标准的, 被个别公司垄断的技术, 不能像 EJB 那样可以换一家厂商的服务器, Spring 不存在第二家公司来做.</p>
<p>另外开发工具的支持上, MyEclipse 5 可以快速的 5 分钟就做好 Spring 整合 Hibernate 的框架代码. 如果大家有兴趣可以自己找点资料来看或者直接咨询我.</p>
<p>那么大家看了这篇文档希望能有一些自己的想法, 把内容 100% 掌握是不现实的, 而且过了一阵子不用就肯定会忘, 所以现在需要的是了解概念, 能跑一些基础的代码以后用到的话再深入研究.</p>
<img src ="http://www.blogjava.net/microlab4321/aggbug/136348.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/microlab4321/" target="_blank">冬天出走的猪</a> 2007-08-13 13:18 <a href="http://www.blogjava.net/microlab4321/articles/136348.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring 依赖注入原理学习 </title><link>http://www.blogjava.net/microlab4321/articles/136347.html</link><dc:creator>冬天出走的猪</dc:creator><author>冬天出走的猪</author><pubDate>Mon, 13 Aug 2007 05:17:00 GMT</pubDate><guid>http://www.blogjava.net/microlab4321/articles/136347.html</guid><wfw:comment>http://www.blogjava.net/microlab4321/comments/136347.html</wfw:comment><comments>http://www.blogjava.net/microlab4321/articles/136347.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/microlab4321/comments/commentRss/136347.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/microlab4321/services/trackbacks/136347.html</trackback:ping><description><![CDATA[<p>首先我们来看看 Spring 参考文档的 11.2.6. 执行SQL语句 这里有个代码片断:</p>
<p>import javax.sql.DataSource;<br>import org.springframework.jdbc.core.JdbcTemplate;</p>
<p>public class ExecuteAStatement {</p>
<p>&nbsp;&nbsp;&nbsp; private JdbcTemplate jt;<br>&nbsp;&nbsp;&nbsp; private DataSource dataSource;</p>
<p>&nbsp;&nbsp;&nbsp; public void doExecute() {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jt = new JdbcTemplate(dataSource);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jt.execute("create table mytable (id integer, name varchar(100))"); <br>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public void setDataSource(DataSource dataSource) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.dataSource = dataSource;<br>&nbsp;&nbsp;&nbsp; }<br>}</p>
<p>这个就是普通的 Java 类, 再参考 11.2.4. DataSource接口, 这里的另一个代码片断:<br>DriverManagerDataSource dataSource = new DriverManagerDataSource();<br>dataSource.setDriverClassName("org.hsqldb.jdbcDriver");<br>dataSource.setUrl("jdbc:hsqldb:hsql://localhost:");<br>dataSource.setUsername("sa");<br>dataSource.setPassword("");</p>
<p>当然上面的连接方式可以配置成我们课程里面介绍的 MyEclipse Derby 的数据库连接:<br>org.apache.derby.jdbc.ClientDriver<br>jdbc:derby://localhost:1527/myeclipse;create=true<br>app<br>app</p>
<p>我们可以写一个测试类来执行代码:</p>
<p>import org.springframework.jdbc.datasource.DriverManagerDataSource;</p>
<p>public class TestTemplate {<br>&nbsp; public static void main(String[] args) {<br>&nbsp;&nbsp;&nbsp; // 新建一个数据源对象<br>&nbsp;&nbsp;&nbsp; DriverManagerDataSource dataSource = new DriverManagerDataSource();<br>&nbsp;&nbsp;&nbsp; dataSource.setDriverClassName("org.hsqldb.jdbcDriver");<br>&nbsp;&nbsp;&nbsp; dataSource.setUrl("jdbc:hsqldb:hsql://localhost:");<br>&nbsp;&nbsp;&nbsp; dataSource.setUsername("sa");<br>&nbsp;&nbsp;&nbsp; dataSource.setPassword("");<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; // 新建一个ExecuteAStatement 对象<br>&nbsp;&nbsp;&nbsp; ExecuteAStatement eas = new ExecuteAStatement();<br>&nbsp;&nbsp;&nbsp; // 给执行表达式的对象关联数据源(也就是常说的注入, 通过 JavaBean 的 setXxx 方法关联起来)<br>&nbsp;&nbsp;&nbsp; eas.setDataSource(dataSource);<br>&nbsp;&nbsp;&nbsp; // 执行功能代码<br>&nbsp;&nbsp;&nbsp; eas.doExecute();<br>&nbsp; }<br>}</p>
<p>这个代码可以跑通, 就是普通的编程方式, 大家可以去看刚才介绍的文档附近的详细说明.</p>
<p>那么如果用 Spring 来做, 代码会变成这样:<br>ExecuteAStatement 类代码保持不变, 多了个 beans.xml:<br>&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br>&lt;beans<br>&nbsp;xmlns="<a href="http://www.springframework.org/schema/beans"><font color=#1a8bc8>http://www.springframework.org/schema/beans</font></a>"<br>&nbsp;xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance"><font color=#1a8bc8>http://www.w3.org/2001/XMLSchema-instance</font></a>"<br>&nbsp;xsi:schemaLocation="<a href="http://www.springframework.org/schema/beans"><font color=#1a8bc8>http://www.springframework.org/schema/beans</font></a> <a href="http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"><font color=#1a8bc8>http://www.springframework.org/schema/beans/spring-beans-2.0.xsd</font></a>"&gt;</p>
<p>&nbsp;&lt;bean id="userDAO" class="ExecuteAStatement"&gt;<br>&nbsp;&nbsp;&lt;property name="dataSource"&gt;<br>&nbsp;&nbsp;&nbsp;&lt;ref bean="myDataSource" /&gt;<br>&nbsp;&nbsp;&lt;/property&gt;<br>&nbsp;&lt;/bean&gt;</p>
<p>&nbsp;&lt;bean id="myDataSource"<br>&nbsp;&nbsp;class="org.springframework.jdbc.datasource.DriverManagerDataSource"&gt;<br>&nbsp;&nbsp;&lt;property name="driverClassName"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;org.hsqldb.jdbcDriver&lt;/value&gt;<br>&nbsp;&nbsp;&lt;/property&gt;<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;&lt;property name="url"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;jdbc:hsqldb:hsql://localhost:&lt;/value&gt;<br>&nbsp;&nbsp;&lt;/property&gt;<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;&lt;property name="username"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;sa&lt;/value&gt;<br>&nbsp;&nbsp;&lt;/property&gt;<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;&lt;property name="password"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;&lt;/value&gt;<br>&nbsp;&nbsp;&lt;/property&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&lt;/bean&gt;</p>
<p>&lt;/beans&gt;</p>
<p>测试类:</p>
<p>import org.springframework.context.ApplicationContext;<br>import org.springframework.context.support.ClassPathXmlApplicationContext;</p>
<p>public class Test {</p>
<p>&nbsp;public static void main(String[] args) throws IOException {<br>&nbsp;&nbsp;ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");<br>&nbsp;&nbsp;ExecuteAStatement eas =(ExecuteAStatement)context.getBean("userDAO");<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;// 执行功能代码<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;eas.doExecute();<br>&nbsp;}<br>}</p>
<p>和上面的 TestTemplate 类相比, 就会发现 new DriverManagerDataSource() 这个过程不用我们写了, 运行的时候会发现一切都执行的好好的, 也就是常说的 ExecuteAStatement 的 dataSource 这个属性被注入了. </p>
<p>那么这个过程到底该如何理解呢? Spring 是一个对象池, 可以简化为一个 Map, 存多个主键和对象的映射. 那么 Spring 运行的过程中, 会根据 beans.xml 一步步进行必要的解析工作:</p>
<p>Map springEngine = new HashMap();</p>
<p>OK, 解析到了<br>&lt;bean id="userDAO" class="ExecuteAStatement"&gt;, 发现 bean 定义, 那就新建一个实例存到对象池里吧, 主键就是 userDAO, 值就是对象:<br>ExecuteAStatement bean1 = new ExecuteAStatement();<br>springEngine.put("userDAO", bean1);</p>
<p>再往下执行, 发现 property 定义:<br>&lt;property name="dataSource"&gt;<br>到了这里, 就知道应该调用 bean1.setDataSource(DataSource) 方法了. 可以接着执行, 发现<br>&lt;ref bean="myDataSource" /&gt;, 哦, 这个方法的参数还没有呢, 是个 bean 的引用, 好了, 要调用这个方法, 还是先 new 一个名字为 myDataSource 的 bean2 吧. 就跳到下面寻找 myDataSource 的定义, 找到了:<br>&nbsp;&lt;bean id="myDataSource"<br>&nbsp;&nbsp;class="org.springframework.jdbc.datasource.DriverManagerDataSource"&gt;<br>&nbsp;&nbsp;&lt;property name="driverClassName"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;org.hsqldb.jdbcDriver&lt;/value&gt;<br>&nbsp;&nbsp;&lt;/property&gt;<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;&lt;property name="url"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;jdbc:hsqldb:hsql://localhost:&lt;/value&gt;<br>&nbsp;&nbsp;&lt;/property&gt;<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;&lt;property name="username"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;sa&lt;/value&gt;<br>&nbsp;&nbsp;&lt;/property&gt;<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;&lt;property name="password"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;&lt;/value&gt;<br>&nbsp;&nbsp;&lt;/property&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&lt;/bean&gt;<br>像以前一样, 先实例化这个类, 然后看到 property 表情就调用对应的 setXxx() 这样的方法, 相当于下面一段代码:<br>&nbsp;&nbsp;&nbsp; // 新建一个数据源对象<br>&nbsp;&nbsp;&nbsp; DriverManagerDataSource bean2 = new DriverManagerDataSource();<br>&nbsp;&nbsp;&nbsp; bean2.setDriverClassName("org.hsqldb.jdbcDriver");<br>&nbsp;&nbsp;&nbsp; bean2.setUrl("jdbc:hsqldb:hsql://localhost:");<br>&nbsp;&nbsp;&nbsp; bean2.setUsername("sa");<br>&nbsp;&nbsp;&nbsp; bean2.setPassword("");<br>不是还有个 bean 的 id 名字为 myDataSource 嘛, 那就把它存到对象池里面:</p>
<p>springEngine.put("myDataSource", bean2);</p>
<p>好了, 最后就是把他们两个关联起来了, 通过 ref 里指定的 bean id 名来关联起来:</p>
<p>// 省略类型转换的代码<br>springEngine.get("userDAO").setDataSource(springEngine.get("myDataSource"));</p>
<p>最后返回给用户的就是一个对象池(一个 Map)了, 所以别人调用的时候, 就发现 springEngine.get("userDAO") 回来的类的 dataSource 属性已经被实例化过了, 这些都是 Spring 幕后工作的代码, 通过反射机制来实现.</p>
<p>所以最后写代码调用:<br>context.getBean("userDAO") 的时候, 得到的是 ExecuteAStatement, 这时候还有一个 myDataSource, 也可以被调用:<br>context.getBean("myDataSource"), 得到的是 DriverManagerDataSource.</p>
<p>介绍的过程, 仅供参考. 欢迎大家交流更好的原理介绍文章.<br></p>
<p><br>&nbsp;</p>
<p>再转一篇别人推荐的通俗易懂的说明, 非实现方面的:<br></p>
<p><span id=post1 style="FONT-SIZE: 12px; COLOR: #000000">IoC就是Inversion of Control，控制反转。在Java开发中，IoC意味着将你设计好的类交给系统去控制，而不是在你的类内部控制。这称为控制反转。 <br><br><br>下面我们以几个例子来说明什么是IoC <br><br><br>假设我们要设计一个Girl和一个Boy类，其中Girl有kiss方法，即Girl想要Kiss一个Boy。那么，我们的问题是，Girl如何能够认识这个Boy？ <br><br><br>在我们中国，常见的MM与GG的认识方式有以下几种 <br>1 青梅竹马； 2 亲友介绍； 3 父母包办 <br>那么哪一种才是最好呢？ <br><br><br>青梅竹马：Girl从小就知道自己的Boy。 <br><br><br>public class Girl { <br>void kiss(){ <br>Boy boy = new Boy(); <br>} <br>} <br><br><br>然而从开始就创建的Boy缺点就是无法在更换。并且要负责Boy的整个生命周期。如果我们的Girl想要换一个怎么办？（严重不支持Girl经常更换Boy,#_#） <br><br><br>亲友介绍：由中间人负责提供Boy来见面 <br><br><br>public class Girl { <br>void kiss(){ <br>Boy boy = BoyFactory.createBoy(); <br>} <br>} <br><br><br>亲友介绍，固然是好。如果不满意，尽管另外换一个好了。但是，亲友BoyFactory经常是以Singleton的形式出现，不然就是，存在于Globals，无处不在，无处不能。实在是太繁琐了一点，不够灵活。我为什么一定要这个亲友掺和进来呢？为什么一定要付给她介绍费呢？万一最好的朋友爱上了我的男朋友呢？ <br><br><br>父母包办：一切交给父母，自己不用费吹灰之力，只需要等着Kiss就好了。 <br><br><br>public class Girl { <br>void kiss(Boy boy){ <br>// kiss boy <br>boy.kiss(); <br>} <br>} <br><br><br>Well，这是对Girl最好的方法，只要想办法贿赂了Girl的父母，并把Boy交给他。那么我们就可以轻松的和Girl来Kiss了。看来几千年传统的父母之命还真是有用哦。至少Boy和Girl不用自己瞎忙乎了。 <br><br><br>这就是IOC，将对象的创建和获取提取到外部。由外部容器提供需要的组件。 <br><br><br>我们知道好莱坞原则：&#8220;Do not call us, we will call you.&#8221; 意思就是，You, girlie, do not call the boy. We will feed you a boy。 <br><br><br>我们还应该知道依赖倒转原则即 Dependence Inversion Princinple，DIP <br><br><br>Eric Gamma说，要面向抽象编程。面向接口编程是面向对象的核心。 <br><br><br>组件应该分为两部分，即 Service, 所提供功能的声明 Implementation, Service的实现 <br><br><br>好处是：多实现可以任意切换，防止 &#8220;everything depends on everything&#8221; 问题．即具体依赖于具体。 <br><br><br>所以，我们的Boy应该是实现Kissable接口。这样一旦Girl不想kiss可恶的Boy的话，还可以kiss可爱的kitten和慈祥的grandmother。 <br>二、IOC的type <br><br><br>IoC的Type指的是Girl得到Boy的几种不同方式。我们逐一来说明。 <br><br><br>IOC type 0：不用IOC <br>public class Girl implements Servicable { <br>private Kissable kissable; <br>public Girl() { <br>kissable = new Boy(); <br>} <br>public void kissYourKissable() { <br>kissable.kiss(); <br>} <br>} <br><br>Girl自己建立自己的Boy，很难更换，很难共享给别人，只能单独使用，并负责完全的生命周期。 <br><br><br>IOC type 1，先看代码：代码 <br><br><br>public class Girl implements Servicable { <br><br>Kissable kissable; <br><br>public void service(ServiceManager mgr) { <br>kissable = (Kissable) mgr.lookup(&#8220;kissable&#8221;); <br>} <br><br>public void kissYourKissable() { <br>kissable.kiss(); <br>} <br><br>} <br><br><br>这种情况出现于Avalon Framework。一个组件实现了Servicable接口，就必须实现service方法，并传入一个ServiceManager。其中会含有需要的其它组件。只需要在service方法中初始化需要的Boy。 <br><br><br>另外，J2EE中从Context取得对象也属于type 1。它依赖于配置文件。 <br><br><br>IOC type 2： <br><br><br>public class Girl { <br><br>private Kissable kissable; <br><br>public void setKissable(Kissable kissable) { <br>this.kissable = kissable; <br>} <br><br>public void kissYourKissable() { <br>kissable.kiss(); <br>} <br><br>} <br><br><br>Type 2出现于Spring Framework，是通过JavaBean的set方法来将需要的Boy传递给Girl。它必须依赖于配置文件。 <br><br>IOC type 3: <br><br><br>public class Girl { <br><br>private Kissable kissable; <br><br>public Girl(Kissable kissable) { <br>this.kissable = kissable; <br>} <br><br>public void kissYourKissable() { <br>kissable.kiss(); <br>} <br><br>} <br><br><br>这就是PicoContainer的组件 。通过构造函数传递Boy给Girl <br><br>PicoContainer container = new DefaultPicoContainer(); <br>container.registerComponentImplementation(Boy.class); <br>container.registerComponentImplementation(Girl.class); <br>Girl girl = (Girl) container.getComponentInstance(Girl.class); <br>girl.kissYourKissable(); <br><br>参考资料 <br><br>1 <a href="http://www.picocontainer.org/presentations/JavaPolis2003.ppt" target=_blank><font color=#0000ff>http://www.picocontainer.org/presentations/JavaPolis2003.ppt</font></a> <br><a href="http://www.picocontainer.org/presentations/JavaPolis2003.pdf" target=_blank><font color=#0000ff>http://www.picocontainer.org/presentations/JavaPolis2003.pdf</font></a> <br><br>2 DIP， Robert C Martin, Bob大叔的优秀论文 <br><a href="http://www.objectmentor.com/resources/articles/dip.pdf" target=_blank><font color=#0000ff>http://www.objectmentor.com/resources/articles/dip.pdf</font></a> <br><br>3 Dependency Injection 依赖注射，Matrin Fowler对DIP的扩展 <br><a href="http://www.martinfowler.com/articles/injection.html" target=_blank><font color=#0000ff>http://www.martinfowler.com/articles/injection.html</font></a> <br><br>4 IOC框架 <br><br>PicoContainer 优秀的IOC框架 <br><a href="http://picocontainer.org/" target=_blank><font color=#0000ff>http://picocontainer.org/</font></a> <br><br>Avalon <br><a href="http://avalon.apache.org/" target=_blank><font color=#0000ff>http://avalon.apache.org/</font></a> <br><br>Spring Framework <br><a href="http://www.springframework.org/" target=_blank><font color=#0000ff>http://www.springframework.org/</font></a> <br><br>HiveMind <br><a href="http://jakarta.apache.org/commons/hivemind" target=_blank><font color=#0000ff>http://jakarta.apache.org/commons/hivemind</font></a> <br><br>----<br><br>IoC是一种模式 <br>IoC(Inversion of Control)中文译为控制反转，目前Java社群中流行的各种轻量级容器的实现都是以IoC模式作为基础的。控制反转意味着在系统开发过程中，设计的类将交由容器去控制，而不是在类的内部去控制，类与类之间的关系将交由容器处理,一个类在需要调用另一个类时,只要调用另一个类在容器中注册的名字就可以得到这个类的实例,与传统的编程方式有了很大的不同,&#8221;不用你找,我来提供给你&#8221;,这就是控制反转的含义。Martin Fowler在他的一篇文章中给IoC起了一个更为直观的名字：依赖注射DI(Dependency Injection)。下面先引入这个模式。 <br><br>在设计模式中，我们已经习惯一种思维编程方式：Interface Driven Design 接口驱动，接口驱动有很多好处，可以提供不同灵活的子类实现，增加代码稳定和健壮性等等，但是接口一定是需要实现的，也就是如下语句迟早要执行： <br><br>InterfaceA a = new InterfaceAImp()； <br><br>InterfaceAImp是接口InterfaceA的一个子类，IoC模式可以延缓接口的实现，根据需要实现，有个比喻：接口如同空的模型套，在必要时，需要向模型套注射石膏，这样才能成为一个模型实体，因此，我们将人为控制接口的实现成为注射。IoC模式是解决调用者和被调用者之间的一种关系，上述InterfaceA实现语句表明当前是在调用被调用者InterfaceAImp，由于被调用者名称写入了调用者的代码中，这产生了一个接口实现的原罪：彼此联系，调用者和被调用者有紧密联系，在UML中是用依赖 Dependency 表示。但是这种依赖在分离关注的思维下是不可忍耐的，必须切割，实现调用者和被调用者解耦，新的Ioc模式依赖注射 (Dependency Injection)模式由此产生了，也就是将依赖先剥离，然后在适当时候再注射进入。 <br></span></p>
<img src ="http://www.blogjava.net/microlab4321/aggbug/136347.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/microlab4321/" target="_blank">冬天出走的猪</a> 2007-08-13 13:17 <a href="http://www.blogjava.net/microlab4321/articles/136347.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring 重点个人小结(摘录)</title><link>http://www.blogjava.net/microlab4321/articles/135805.html</link><dc:creator>冬天出走的猪</dc:creator><author>冬天出走的猪</author><pubDate>Fri, 10 Aug 2007 06:00:00 GMT</pubDate><guid>http://www.blogjava.net/microlab4321/articles/135805.html</guid><wfw:comment>http://www.blogjava.net/microlab4321/comments/135805.html</wfw:comment><comments>http://www.blogjava.net/microlab4321/articles/135805.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/microlab4321/comments/commentRss/135805.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/microlab4321/services/trackbacks/135805.html</trackback:ping><description><![CDATA[<p>Spring 这么多内容该看哪些? 我就根据我的理解谈一些个人的观点, 仅供参考. 欢迎讨论.</p>
<p>首先学习 Spring 等框架应该本着简化程序员负担, 加快开发速度的原则来进行, 而不是把框架的知识点都给学习, 练习一遍. 另外用 Spring 的时候也要注意不要过渡依赖 Spring 框架, 注意它们的宣传语是: 无侵入, 轻量级. 所以, 除非必要, 千万不要让 Spring 侵入你的代码啊, 例如哪些 Aware 接口, 不也是变相的侵入了你的代码嘛. 还有不要为了 Spring 而 Spring, 明明一段代码用 new JavaBean().setUsername("xxx") 这样的方式非常简练, 你非要整出个 bean 的配置文件来, 纯属多此一举. 所以无侵入只是个相对概念, 代码写少了, 但是 bean.xml 配置文件和 Spring.jar 你不能丢吧, 所以你已经被 Spring 侵入了, 而且以后想换第二家公司来做个框架解析你这些 XML 文件都困难呢, 因为 Spring 本身并不是可替换或者热插拔的, 换句话说所有用 Spring 的代码都已经被绑定到了 Spring 框架上.&nbsp; 好了, 先说一下目前了解的 Spring 的主要应用场合.</p>
<p>1. 依赖注入, 主要是把一些需要经常修改的内容提取为 Bean, 也是尽量能不提取就不提取, 要不然到最后那个 bean.xml 增加到了几千行你也就不会觉得这时候有什么方便的地方了;</p>
<p>2. 整合 Hibernate, 这个可以说是最强大最实用的功能了, 也是为什么一提到 Spring 后面总是跟着 Hibernate 的原因. 在文档的 12.2. Hibernate 有相关的介绍. 例如看看下面的调用代码:</p>
<p>import java.io.IOException;</p>
<p>import org.springframework.context.ApplicationContext;<br>import org.springframework.context.support.ClassPathXmlApplicationContext;</p>
<p>import dao.Testuser;<br>import dao.TestuserDAO;</p>
<p>// 调用 Hibernate DAO<br>public class Test {</p>
<p>&nbsp;public static void main(String[] args) throws IOException {<br>&nbsp;&nbsp;ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");<br>&nbsp;&nbsp;TestuserDAO dao =(TestuserDAO)context.getBean("userDAO");<br>&nbsp;&nbsp;Testuser user = new Testuser();<br>//&nbsp;&nbsp;user.setxxx..., 设置值.<br>&nbsp;&nbsp;dao.save(user);<br>&nbsp;}</p>
<p>}</p>
<p><br>再看 DAO 的代码:</p>
<p>package dao;</p>
<p>import org.springframework.orm.hibernate3.support.HibernateDaoSupport;</p>
<p>/**<br>&nbsp;* Data access object (DAO) for domain model class Testuser.<br>&nbsp;*/</p>
<p>public class TestuserDAO extends HibernateDaoSupport {</p>
<p><br>&nbsp;public void save(Testuser transientInstance) {<br>&nbsp;&nbsp;getHibernateTemplate().save(transientInstance);<br>&nbsp;}</p>
<p>&nbsp;public void delete(Testuser persistentInstance) {<br>&nbsp;&nbsp;getHibernateTemplate().delete(persistentInstance);</p>
<p>&nbsp;}</p>
<p>}</p>
<p>是不是感觉简单到令人难以置信?&nbsp; 要保存的实体 POJO 也很简单:<br>package dao;</p>
<p>/**<br>&nbsp;* Testuser generated by MyEclipse Persistence Tools<br>&nbsp;*/</p>
<p>public class Testuser implements java.io.Serializable {</p>
<p>&nbsp;// Fields</p>
<p>&nbsp;private Integer id;</p>
<p>&nbsp;private String username;</p>
<p>&nbsp;private Integer age;<br>&nbsp;<br>&nbsp;getXXX();<br>&nbsp;setXXX();<br>}</p>
<p>然后我们看主要的配置文件 applicationContext.xml 的内容:<br>&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br>&lt;beans<br>&nbsp;xmlns="<a href="http://www.springframework.org/schema/beans"><u><font color=#0000ff>http://www.springframework.org/schema/beans</font></u></a>"<br>&nbsp;xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance"><u><font color=#0000ff>http://www.w3.org/2001/XMLSchema-instance</font></u></a>"<br>&nbsp;xsi:schemaLocation="<a href="http://www.springframework.org/schema/beans"><u><font color=#0000ff>http://www.springframework.org/schema/beans</font></u></a> <a href="http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"><u><font color=#0000ff>http://www.springframework.org/schema/beans/spring-beans-2.0.xsd</font></u></a>"&gt;</p>
<p>&nbsp;&lt;bean id="userDAO" class="dao.TestuserDAO"&gt;<br>&nbsp;&nbsp;&lt;property name="sessionFactory"&gt;<br>&nbsp;&nbsp;&nbsp;&lt;ref bean="hibernateSessionFactory" /&gt;<br>&nbsp;&nbsp;&lt;/property&gt;<br>&nbsp;&lt;/bean&gt;</p>
<p>&nbsp;&lt;bean id="hibernateSessionFactory"<br>&nbsp;&nbsp;class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"&gt;<br>&nbsp;&nbsp;&lt;property name="configLocation"<br>&nbsp;&nbsp;&nbsp;value="file:src/hibernate.cfg.xml"&gt;<br>&nbsp;&nbsp;&lt;/property&gt;<br>&nbsp;&lt;/bean&gt;</p>
<p>&lt;/beans&gt;</p>
<p>大家可以看到 DAO 的&nbsp; HibernateSessionFactory 完全是配置出来的, 不用我们写一行 Hibernate 初始化的代码, Spring 已经帮我们做好了一切. 完整的代码大家可以下载附件. 但是大家也请注意, 我们的代码这样做也是依赖了 Spring 的框架, 其实功能强大和不依赖具体的框架本身就是个谬论, 你不用(依赖)它的框架又怎么能用到它的强大的功能呢?</p>
<p>3. 使用 JDBCTemplate 简化普通的 JDBC 代码编写, 这个大家可以去看参考文档(官方的 Spring Framework 开发参考手册, 中英文均可) " 第 11 章 使用JDBC进行数据访问", 老师也介绍过了.</p>
<p>4. 整合 Struts, 也参考文档里的内容, 具体是 15.4. Struts., 让 Struts 的 Action 可以被注入内容.</p>
<p>5. AOP 功能, 我没用过, 只是听一些朋友介绍说他们用的有, 所以建议大家了解一下, 个人觉得挺难理解, 开发的时候也是完全依赖 Spring 的 API, 比较难做. AOP 是 Spring 后来加入的内容, 按照官方文档是"锦上添花的内容", 其实就是捆绑了自己的 AOP, 而 Spring 最核心的内容当属依赖注入功能.</p>
<p>6.&nbsp; 事务管理, 据说有一些人在用. 但是感觉开发起来挺费劲的, 不如 EJB 3 的标注来的简便. 不过你被绑在了 Spring 框架上, 一般就只好用它自己做的这些个功能了.</p>
<p>7. 其它的 Spring MVC 等内容, 都是可选项, 具体来说开发工具支持上并不如 Struts 来的那么直接好用.</p>
<p>至于 Spring 的缺点:<br>1. 不支持分布式访问,分布式事务和集群, 这些是 EJB 3 的优点, 但是 Spring 目前还不支持;<br>2. 配置使用 XML 文件, 如果文件内容很多的话对维护的人来说是个负担;<br>3. 提供 Spring 容器的只有一家公司(Interface21), 换句话说它是非标准的, 被个别公司垄断的技术, 不能像 EJB 那样可以换一家厂商的服务器, Spring 不存在第二家公司来做.</p>
<p>另外开发工具的支持上, MyEclipse 5 可以快速的 5 分钟就做好 Spring 整合 Hibernate 的框架代码. 如果大家有兴趣可以自己找点资料来看或者直接咨询我.</p>
<p>那么大家看了这篇文档希望能有一些自己的想法, 把内容 100% 掌握是不现实的, 而且过了一阵子不用就肯定会忘, 所以现在需要的是了解概念, 能跑一些基础的代码以后用到的话再深入研究.</p>
<img src ="http://www.blogjava.net/microlab4321/aggbug/135805.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/microlab4321/" target="_blank">冬天出走的猪</a> 2007-08-10 14:00 <a href="http://www.blogjava.net/microlab4321/articles/135805.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>