﻿<?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-WolfSoft</title><link>http://www.blogjava.net/WolfSoft/</link><description /><language>zh-cn</language><lastBuildDate>Sun, 12 Apr 2026 14:51:27 GMT</lastBuildDate><pubDate>Sun, 12 Apr 2026 14:51:27 GMT</pubDate><ttl>60</ttl><item><title>VML树形结构流程图</title><link>http://www.blogjava.net/WolfSoft/archive/2010/11/12/337877.html</link><dc:creator>SuperWolf</dc:creator><author>SuperWolf</author><pubDate>Fri, 12 Nov 2010 02:18:00 GMT</pubDate><guid>http://www.blogjava.net/WolfSoft/archive/2010/11/12/337877.html</guid><wfw:comment>http://www.blogjava.net/WolfSoft/comments/337877.html</wfw:comment><comments>http://www.blogjava.net/WolfSoft/archive/2010/11/12/337877.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/WolfSoft/comments/commentRss/337877.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/WolfSoft/services/trackbacks/337877.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/WolfSoft/archive/2010/11/12/337877.html'>阅读全文</a><img src ="http://www.blogjava.net/WolfSoft/aggbug/337877.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/WolfSoft/" target="_blank">SuperWolf</a> 2010-11-12 10:18 <a href="http://www.blogjava.net/WolfSoft/archive/2010/11/12/337877.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jquery.floatingbox 使用</title><link>http://www.blogjava.net/WolfSoft/archive/2010/11/04/337219.html</link><dc:creator>SuperWolf</dc:creator><author>SuperWolf</author><pubDate>Thu, 04 Nov 2010 05:14:00 GMT</pubDate><guid>http://www.blogjava.net/WolfSoft/archive/2010/11/04/337219.html</guid><wfw:comment>http://www.blogjava.net/WolfSoft/comments/337219.html</wfw:comment><comments>http://www.blogjava.net/WolfSoft/archive/2010/11/04/337219.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/WolfSoft/comments/commentRss/337219.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/WolfSoft/services/trackbacks/337219.html</trackback:ping><description><![CDATA[&nbsp;jquery.floatingbox 是一款很好的内容漂浮插件，它能够很好的根据自己的需求进行不同位置漂浮显示,官网（<a href="http://www.phpletter.com/">http://www.phpletter.com/</a>）<br />
&nbsp;<br />
实现代码如下：<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><span style="color: #000000">1</span><span style="color: #000000">.</span><span style="color: #000000">&lt;%</span><span style="color: #000000">@&nbsp;page&nbsp;language</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">java</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">import</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">java.util.*</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;pageEncoding</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">UTF-8</span><span style="color: #000000">"</span><span style="color: #000000">%&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">2</span><span style="color: #000000">.</span><span style="color: #000000">&lt;%</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">3</span><span style="color: #000000">.String&nbsp;path&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;request.getContextPath();&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">4</span><span style="color: #000000">.String&nbsp;basePath&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;request.getScheme()</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">://</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">request.getServerName()</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">:</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">request.getServerPort()</span><span style="color: #000000">+</span><span style="color: #000000">path</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">/</span><span style="color: #000000">"</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">5</span><span style="color: #000000">.</span><span style="color: #000000">%&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">6</span><span style="color: #000000">.&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">7</span><span style="color: #000000">.</span><span style="color: #000000">&lt;!</span><span style="color: #000000">DOCTYPE&nbsp;HTML&nbsp;PUBLIC&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">-//W3C//DTD&nbsp;HTML&nbsp;4.01&nbsp;Transitional//EN</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">8</span><span style="color: #000000">.</span><span style="color: #000000">&lt;</span><span style="color: #000000">html</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">9</span><span style="color: #000000">.&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">head</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">10</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">base&nbsp;href</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">&lt;%=basePath%&gt;</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">11</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">12</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">title</span><span style="color: #000000">&gt;</span><span style="color: #000000">My&nbsp;JSP&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">index.jsp</span><span style="color: #000000">'</span><span style="color: #000000">&nbsp;starting&nbsp;page</span><span style="color: #000000">&lt;/</span><span style="color: #000000">title</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">13</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">meta&nbsp;http</span><span style="color: #000000">-</span><span style="color: #000000">equiv</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">pragma</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;content</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">no-cache</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">14</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">meta&nbsp;http</span><span style="color: #000000">-</span><span style="color: #000000">equiv</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">cache-control</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;content</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">no-cache</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">15</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">meta&nbsp;http</span><span style="color: #000000">-</span><span style="color: #000000">equiv</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">expires</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;content</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">0</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">16</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">meta&nbsp;http</span><span style="color: #000000">-</span><span style="color: #000000">equiv</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">keywords</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;content</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">keyword1,keyword2,keyword3</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">17</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">meta&nbsp;http</span><span style="color: #000000">-</span><span style="color: #000000">equiv</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">description</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;content</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">This&nbsp;is&nbsp;my&nbsp;page</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">18</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">19</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">style&nbsp;type</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">text/css</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img id="Codehighlighter1_836_964_Open_Image" onclick="this.style.display='none'; Codehighlighter1_836_964_Open_Text.style.display='none'; Codehighlighter1_836_964_Closed_Image.style.display='inline'; Codehighlighter1_836_964_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="display: none" id="Codehighlighter1_836_964_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_836_964_Closed_Text.style.display='none'; Codehighlighter1_836_964_Open_Image.style.display='inline'; Codehighlighter1_836_964_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" /></span><span style="color: #000000">20</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#FloaintBox</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_836_964_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_836_964_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">21</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;border</span><span style="color: #000000">-</span><span style="color: #000000">width:&nbsp;1px;&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">22</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;border</span><span style="color: #000000">-</span><span style="color: #000000">color:&nbsp;red;&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">23</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;background</span><span style="color: #000000">-</span><span style="color: #000000">color:&nbsp;#cccffc;&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" /></span><span style="color: #000000">24</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">25</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">style</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">26</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">27</span><span style="color: #000000">.&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">script&nbsp;type</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">text/javascript</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;src</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">&lt;%=path%&gt;/js/jquery.js</span><span style="color: #000000">"</span><span style="color: #000000">&gt;&lt;/</span><span style="color: #000000">script</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">28</span><span style="color: #000000">.&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">script&nbsp;type</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">text/javascript</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;src</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">&lt;%=path%&gt;/js/jquery.floatingbox.js</span><span style="color: #000000">"</span><span style="color: #000000">&gt;&lt;/</span><span style="color: #000000">script</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">29</span><span style="color: #000000">.&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">script&nbsp;type</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">text/javascript</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">30</span><span style="color: #000000">.&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">31</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(document).ready(&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">32</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function()&nbsp;&nbsp;&nbsp;<br />
<img id="Codehighlighter1_1302_1381_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1302_1381_Open_Text.style.display='none'; Codehighlighter1_1302_1381_Closed_Image.style.display='inline'; Codehighlighter1_1302_1381_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="display: none" id="Codehighlighter1_1302_1381_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1302_1381_Closed_Text.style.display='none'; Codehighlighter1_1302_1381_Open_Image.style.display='inline'; Codehighlighter1_1302_1381_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" /></span><span style="color: #000000">33</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_1302_1381_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_1302_1381_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">34</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(</span><span style="color: #000000">'</span><span style="color: #000000">#FloaintBox</span><span style="color: #000000">'</span><span style="color: #000000">).floating();&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" /></span><span style="color: #000000">35</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">36</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">37</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">38</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">script</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">39</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">40</span><span style="color: #000000">.&nbsp;&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">head</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">41</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">42</span><span style="color: #000000">.&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">body</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">43</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">div&nbsp;id</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">FloaintBox</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">44</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">h2</span><span style="color: #000000">&gt;</span><span style="color: #000000">JQuery&nbsp;Floating&nbsp;Box&nbsp;Plugin</span><span style="color: #000000">&lt;/</span><span style="color: #000000">h2</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">45</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">p</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">46</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&nbsp;&nbsp;We&nbsp;are&nbsp;specialized&nbsp;in&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">br</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">49</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">ul</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">50</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">li</span><span style="color: #000000">&gt;</span><span style="color: #000000">Website&nbsp;Design</span><span style="color: #000000">&lt;/</span><span style="color: #000000">li</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">51</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">li</span><span style="color: #000000">&gt;</span><span style="color: #000000">Survey&nbsp;System&nbsp;Creation</span><span style="color: #000000">&lt;/</span><span style="color: #000000">li</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">52</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">li</span><span style="color: #000000">&gt;</span><span style="color: #000000">E</span><span style="color: #000000">-</span><span style="color: #000000">commerce&nbsp;Site&nbsp;Development</span><span style="color: #000000">&lt;/</span><span style="color: #000000">li</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">53</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">ul</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">54</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">button&nbsp;onclick</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">javascript:$('#FloaintBox').floatingPosition('left',&nbsp;'top');</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000">Top&nbsp;Left</span><span style="color: #000000">&lt;/</span><span style="color: #000000">button</span><span style="color: #000000">&gt;&lt;</span><span style="color: #000000">br</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">55</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">button&nbsp;onclick</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">javascript:$('#FloaintBox').floatingPosition('right',&nbsp;'top');</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000">Top&nbsp;Right</span><span style="color: #000000">&lt;/</span><span style="color: #000000">button</span><span style="color: #000000">&gt;&lt;</span><span style="color: #000000">br</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">56</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">button&nbsp;onclick</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">javascript:$('#FloaintBox').floatingPosition('left',&nbsp;'bottom');</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000">Bottom&nbsp;Left</span><span style="color: #000000">&lt;/</span><span style="color: #000000">button</span><span style="color: #000000">&gt;&lt;</span><span style="color: #000000">br</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">57</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">button&nbsp;onclick</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">javascript:$('#FloaintBox').floatingPosition('right',&nbsp;'bottom');</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000">Bottom&nbsp;Right</span><span style="color: #000000">&lt;/</span><span style="color: #000000">button</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">58</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">p</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">59</span><span style="color: #000000">.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">div</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">60</span><span style="color: #000000">.&nbsp;&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">body</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">61</span><span style="color: #000000">.</span><span style="color: #000000">&lt;/</span><span style="color: #000000">html</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span></div>
<br />
源码下载:<a href="/Files/WolfSoft/floating.rar">floating.rar</a> <br />
<img src ="http://www.blogjava.net/WolfSoft/aggbug/337219.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/WolfSoft/" target="_blank">SuperWolf</a> 2010-11-04 13:14 <a href="http://www.blogjava.net/WolfSoft/archive/2010/11/04/337219.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring3.0新特性</title><link>http://www.blogjava.net/WolfSoft/archive/2010/11/04/337210.html</link><dc:creator>SuperWolf</dc:creator><author>SuperWolf</author><pubDate>Thu, 04 Nov 2010 03:15:00 GMT</pubDate><guid>http://www.blogjava.net/WolfSoft/archive/2010/11/04/337210.html</guid><wfw:comment>http://www.blogjava.net/WolfSoft/comments/337210.html</wfw:comment><comments>http://www.blogjava.net/WolfSoft/archive/2010/11/04/337210.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/WolfSoft/comments/commentRss/337210.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/WolfSoft/services/trackbacks/337210.html</trackback:ping><description><![CDATA[<p><strong><span style="font-family: 宋体; color: black; font-size: 9pt">一、首先，模块的组织更加的细致，从那么多的</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">jar</span><span style="font-family: 宋体; color: black; font-size: 9pt">分包就看的出来：</span>&nbsp;<br />
</strong><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"><img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/wolfsoft/slib.jpg" /><br />
</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">Spring</span><span style="font-family: 宋体; color: black; font-size: 9pt">的构建系统以及依赖管理使用的是</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">Apache Ivy</span><span style="font-family: 宋体; color: black; font-size: 9pt">，从源码包看出，也使用了</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">Maven</span><span style="font-family: 宋体; color: black; font-size: 9pt">。</span>&nbsp;<br />
<span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">Maven</span><span style="font-family: 宋体; color: black; font-size: 9pt">确实是个好东西，好处不再多言，以后希望能进一步用好它。</span>&nbsp;<br />
<span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"><br />
</span><strong><span style="font-family: 宋体; color: black; font-size: 9pt">二、新特性如下：</span>&nbsp;</strong><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"><br />
Spring Expression Language </span><span style="font-family: 宋体; color: black; font-size: 9pt">（</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">Spring</span><span style="font-family: 宋体; color: black; font-size: 9pt">表达式语言）</span>&nbsp;<span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"><br />
IoC enhancements/Java based bean metadata </span><span style="font-family: 宋体; color: black; font-size: 9pt">（</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">Ioc</span><span style="font-family: 宋体; color: black; font-size: 9pt">增强</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">/</span><span style="font-family: 宋体; color: black; font-size: 9pt">基于</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">Java</span><span style="font-family: 宋体; color: black; font-size: 9pt">的</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">bean</span><span style="font-family: 宋体; color: black; font-size: 9pt">元数据）</span>&nbsp;<span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"><br />
General-purpose type conversion system and UI field formatting system </span><span style="font-family: 宋体; color: black; font-size: 9pt">（通用类型转换系统和</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">UI</span><span style="font-family: 宋体; color: black; font-size: 9pt">字段格式化系统）</span>&nbsp;<span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"><br />
Object to XML mapping functionality (OXM) moved from Spring Web Services project </span><span style="font-family: 宋体; color: black; font-size: 9pt">（对象到</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">XML</span><span style="font-family: 宋体; color: black; font-size: 9pt">映射功能从</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">Spring Web Services</span><span style="font-family: 宋体; color: black; font-size: 9pt">项目移出）</span>&nbsp;<span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"><br />
Comprehensive REST support </span><span style="font-family: 宋体; color: black; font-size: 9pt">（广泛的</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">REST</span><span style="font-family: 宋体; color: black; font-size: 9pt">支持）</span>&nbsp;<span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"><br />
@MVC additions </span><span style="font-family: 宋体; color: black; font-size: 9pt">（</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">@MVC</span><span style="font-family: 宋体; color: black; font-size: 9pt">增强）</span>&nbsp;<span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"><br />
Declarative model validation </span><span style="font-family: 宋体; color: black; font-size: 9pt">（声明式模型验证）</span>&nbsp;<span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"><br />
Early support for Java EE 6 </span><span style="font-family: 宋体; color: black; font-size: 9pt">（提前对</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">Java EE6</span><span style="font-family: 宋体; color: black; font-size: 9pt">提供支持）</span>&nbsp;<span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"><br />
Embedded database support </span><span style="font-family: 宋体; color: black; font-size: 9pt">（嵌入式数据库的支持）</span>&nbsp;<span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"><br />
<br />
</span><strong><span style="font-family: 宋体; color: black; font-size: 9pt">三、针对</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">Java 5</span><span style="font-family: 宋体; color: black; font-size: 9pt">的核心</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">API</span><span style="font-family: 宋体; color: black; font-size: 9pt">升级</span>&nbsp;</strong><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"><br />
<strong>1</strong></span><span style="font-family: 宋体; color: black; font-size: 9pt">、</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">BeanFactory</span><span style="font-family: 宋体; color: black; font-size: 9pt">接口尽可能返回明确的</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">bean</span><span style="font-family: 宋体; color: black; font-size: 9pt">实例，例如：</span>&nbsp;<span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T getBean(String name, Class requiredType)</span>&nbsp;<span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Map getBeansOfType(Class type)</span>&nbsp;<span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Spring3</span><span style="font-family: 宋体; color: black; font-size: 9pt">对泛型的支持，又进了一步。个人建议泛型应该多用，有百利而无一害！</span>&nbsp;<span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"><br />
<strong>2</strong></span><span style="font-family: 宋体; color: black; font-size: 9pt"><strong>、</strong></span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">Spring</span><span style="font-family: 宋体; color: black; font-size: 9pt">的</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">TaskExecutor</span><span style="font-family: 宋体; color: black; font-size: 9pt">接口现在继承自</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">java.util.concurrent.Executor</span><span style="font-family: 宋体; color: black; font-size: 9pt">：</span>&nbsp;<span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"><br />
</span><span style="font-family: 宋体; color: black; font-size: 9pt">&nbsp;&nbsp;&nbsp;扩展的子接口</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">AsyncTaskExecutor</span><span style="font-family: 宋体; color: black; font-size: 9pt">支持标准的具有返回结果</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">Futures</span><span style="font-family: 宋体; color: black; font-size: 9pt">的</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">Callables</span><span style="font-family: 宋体; color: black; font-size: 9pt">。</span>&nbsp;<span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"><br />
</span><span style="font-family: 宋体; color: black; font-size: 9pt">&nbsp;&nbsp;&nbsp;任务计划，个人还是更喜欢</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">Quartz</span><span style="font-family: 宋体; color: black; font-size: 9pt">。</span>&nbsp;<span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"><br />
<strong>3</strong></span><span style="font-family: 宋体; color: black; font-size: 9pt">、新的基于</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">Java5</span><span style="font-family: 宋体; color: black; font-size: 9pt">的</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">API</span><span style="font-family: 宋体; color: black; font-size: 9pt">和</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">SPI</span><span style="font-family: 宋体; color: black; font-size: 9pt">转换器</span>&nbsp;<span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"><br />
</span><span style="font-family: 宋体; color: black; font-size: 9pt">&nbsp;&nbsp;&nbsp;无状态的</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">ConversionService </span><span style="font-family: 宋体; color: black; font-size: 9pt">和</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"> Converters</span>&nbsp;<span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"><br />
</span><span style="font-family: 宋体; color: black; font-size: 9pt">&nbsp;&nbsp;&nbsp;取代标准的</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">JDK PropertyEditors</span>&nbsp;<span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"><br />
</span><span style="font-family: 宋体; color: black; font-size: 9pt">&nbsp;&nbsp;&nbsp;类型化的</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">ApplicationListener</span><span style="font-family: 宋体; color: black; font-size: 9pt">，这是一个实现</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">&#8220;</span><span style="font-family: 宋体; color: black; font-size: 9pt">观察者设计模式</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">&#8221;</span><span style="font-family: 宋体; color: black; font-size: 9pt">使用的事件监听器。</span>&nbsp;<span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"><br />
</span><span style="font-family: 宋体; color: black; font-size: 9pt">&nbsp;&nbsp;&nbsp;基于事件的编程模式，好处多多，在项目中应该考虑使用，基于事件、状态迁移的设计思路，有助于理清软件流程，和减少项目的耦合度。</span>&nbsp;<br />
<span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"><br />
</span><strong><span style="font-family: 宋体; color: black; font-size: 9pt">四、</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">Spring</span><span style="font-family: 宋体; color: black; font-size: 9pt">表达式语言</span>&nbsp;</strong><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"><br />
Spring</span><span style="font-family: 宋体; color: black; font-size: 9pt">表达式语言是一种从语法上和统一表达式语言（</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">Unified EL</span><span style="font-family: 宋体; color: black; font-size: 9pt">）相类似的语言，但提供更多的重要功能。<br />
它可以在基于</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">XML</span><span style="font-family: 宋体; color: black; font-size: 9pt">配置文件和基于注解的</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">bean</span><span style="font-family: 宋体; color: black; font-size: 9pt">配置中使用，并作为基础为跨</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">Spring portfolio</span><span style="font-family: 宋体; color: black; font-size: 9pt">平台使用表达式语言提供支持。</span>&nbsp;<br />
<span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"><br />
</span><span style="font-family: 宋体; color: black; font-size: 9pt">接下来，是一个表达式语言如何用于配置一个数据库安装中的属性的示例：</span>&nbsp;<span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"><br />
</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><span style="color: #000000">&lt;</span><span style="color: #000000">bean&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">mycompany.RewardsTestDatabase</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">property&nbsp;name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">databaseName</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">#{systemProperties.databaseName}</span><span style="color: #000000">"</span><span style="color: #000000">/&gt;</span><span style="color: #000000">&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">property&nbsp;name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">keyGenerator</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">#{strategyBean.databaseKeyGenerator}</span><span style="color: #000000">"</span><span style="color: #000000">/&gt;</span><span style="color: #000000">&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">&lt;/</span><span style="color: #000000">bean</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span></div>
<p><span style="font-family: 宋体; color: black; font-size: 9pt">如果你更愿意使用注解来配置你的组件，那么这种功能同样可用：</span><br />
</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img id="Codehighlighter1_45_271_Open_Image" onclick="this.style.display='none'; Codehighlighter1_45_271_Open_Text.style.display='none'; Codehighlighter1_45_271_Closed_Image.style.display='inline'; Codehighlighter1_45_271_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="display: none" id="Codehighlighter1_45_271_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_45_271_Closed_Text.style.display='none'; Codehighlighter1_45_271_Open_Image.style.display='inline'; Codehighlighter1_45_271_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" /><span style="color: #000000">@Repository&nbsp;</span><span style="color: #0000ff">public</span>&nbsp;<span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;RewardsTestDatabase&nbsp;</span><span id="Codehighlighter1_45_271_Open_Text"><span style="color: #000000">{&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Value(</span><span style="color: #000000">"</span><span style="color: #000000">#{systemProperties.databaseName}</span><span style="color: #000000">"</span><span style="color: #000000">)&nbsp;<br />
<img id="Codehighlighter1_147_151_Open_Image" onclick="this.style.display='none'; Codehighlighter1_147_151_Open_Text.style.display='none'; Codehighlighter1_147_151_Closed_Image.style.display='inline'; Codehighlighter1_147_151_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_147_151_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_147_151_Closed_Text.style.display='none'; Codehighlighter1_147_151_Open_Image.style.display='inline'; Codehighlighter1_147_151_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span>&nbsp;<span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setDatabaseName(String&nbsp;dbName)&nbsp;</span><span id="Codehighlighter1_147_151_Open_Text"><span style="color: #000000">{&nbsp;&#8230;&nbsp;}</span></span><span style="color: #000000">&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Value(</span><span style="color: #000000">"</span><span style="color: #000000">#{strategyBean.databaseKeyGenerator}</span><span style="color: #000000">"</span><span style="color: #000000">)&nbsp;<br />
<img id="Codehighlighter1_264_268_Open_Image" onclick="this.style.display='none'; Codehighlighter1_264_268_Open_Text.style.display='none'; Codehighlighter1_264_268_Closed_Image.style.display='inline'; Codehighlighter1_264_268_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_264_268_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_264_268_Closed_Text.style.display='none'; Codehighlighter1_264_268_Open_Image.style.display='inline'; Codehighlighter1_264_268_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;voidsetKeyGenerator(KeyGenerator&nbsp;kg)&nbsp;</span><span id="Codehighlighter1_264_268_Open_Text"><span style="color: #000000">{&nbsp;&#8230;&nbsp;}</span></span><span style="color: #000000">&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="color: #000000">&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span></div>
<p><span style="font-family: 宋体; color: black; font-size: 9pt">又多一种表达式语言，造轮子的运动还在继续中！</span>&nbsp;<span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"><br />
<br />
</span><strong><span style="font-family: 宋体; color: black; font-size: 9pt">五、基于</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">Java</span><span style="font-family: 宋体; color: black; font-size: 9pt">的</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">bean</span><span style="font-family: 宋体; color: black; font-size: 9pt">元数据</span>&nbsp;</strong><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"><br />
JavaConfig</span><span style="font-family: 宋体; color: black; font-size: 9pt">项目中的一些核心特性已经集成到了</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">Spring</span><span style="font-family: 宋体; color: black; font-size: 9pt">中来，这意味着如下这些特性现在已经可用了：</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">&nbsp;<br />
</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; height: 119px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><span style="color: #000000">@Configuration&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />@Bean&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />@DependsOn&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />@Primary&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />@Lazy&nbsp;<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />@Import&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />@Value&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span></div>
<p></span><span style="font-family: 宋体; color: black; font-size: 9pt">这儿有一个例子，关于一个</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">Java</span><span style="font-family: 宋体; color: black; font-size: 9pt">类如何使用新的</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">JavaConfig</span><span style="font-family: 宋体; color: black; font-size: 9pt">特性提供基础的配置信息：</span>&nbsp;<br />
</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;org.example.config;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />@Configuration&nbsp;<br />
<img id="Codehighlighter1_69_964_Open_Image" onclick="this.style.display='none'; Codehighlighter1_69_964_Open_Text.style.display='none'; Codehighlighter1_69_964_Closed_Image.style.display='inline'; Codehighlighter1_69_964_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="display: none" id="Codehighlighter1_69_964_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_69_964_Closed_Text.style.display='none'; Codehighlighter1_69_964_Open_Image.style.display='inline'; Codehighlighter1_69_964_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" /></span><span style="color: #0000ff">public</span>&nbsp;<span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;AppConfig&nbsp;</span><span id="Codehighlighter1_69_964_Open_Text"><span style="color: #000000">{&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;@Value(</span><span style="color: #000000">"</span><span style="color: #000000">#{jdbcProperties.url}</span><span style="color: #000000">"</span><span style="color: #000000">)&nbsp;String&nbsp;jdbcUrl;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;@Value(</span><span style="color: #000000">"</span><span style="color: #000000">#{jdbcProperties.username}</span><span style="color: #000000">"</span><span style="color: #000000">)&nbsp;String&nbsp;username;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;@Value(</span><span style="color: #000000">"</span><span style="color: #000000">#{jdbcProperties.password}</span><span style="color: #000000">"</span><span style="color: #000000">)&nbsp;String&nbsp;password;&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;@Bean&nbsp;<br />
<img id="Codehighlighter1_314_374_Open_Image" onclick="this.style.display='none'; Codehighlighter1_314_374_Open_Text.style.display='none'; Codehighlighter1_314_374_Closed_Image.style.display='inline'; Codehighlighter1_314_374_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_314_374_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_314_374_Closed_Text.style.display='none'; Codehighlighter1_314_374_Open_Image.style.display='inline'; Codehighlighter1_314_374_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;FooService&nbsp;fooService()&nbsp;</span><span id="Codehighlighter1_314_374_Open_Text"><span style="color: #000000">{&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span>&nbsp;<span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;FooServiceImpl(fooRepository());&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;@Bean&nbsp;<br />
<img id="Codehighlighter1_430_499_Open_Image" onclick="this.style.display='none'; Codehighlighter1_430_499_Open_Text.style.display='none'; Codehighlighter1_430_499_Closed_Image.style.display='inline'; Codehighlighter1_430_499_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_430_499_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_430_499_Closed_Text.style.display='none'; Codehighlighter1_430_499_Open_Image.style.display='inline'; Codehighlighter1_430_499_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;FooRepository&nbsp;fooRepository()&nbsp;</span><span id="Codehighlighter1_430_499_Open_Text"><span style="color: #000000">{&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span>&nbsp;<span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;HibernateFooRepository(sessionFactory());&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;@Bean&nbsp;<br />
<img id="Codehighlighter1_557_830_Open_Image" onclick="this.style.display='none'; Codehighlighter1_557_830_Open_Text.style.display='none'; Codehighlighter1_557_830_Closed_Image.style.display='inline'; Codehighlighter1_557_830_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_557_830_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_557_830_Closed_Text.style.display='none'; Codehighlighter1_557_830_Open_Image.style.display='inline'; Codehighlighter1_557_830_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;SessionFactory&nbsp;sessionFactory()&nbsp;</span><span id="Codehighlighter1_557_830_Open_Text"><span style="color: #000000">{&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;wire&nbsp;up&nbsp;a&nbsp;session&nbsp;factory&nbsp;</span><span style="color: #008000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AnnotationSessionFactoryBean&nbsp;asFactoryBean&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;AnnotationSessionFactoryBean();&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;asFactoryBean.setDataSource(dataSource());&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;additional&nbsp;config&nbsp;</span><span style="color: #008000"><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;asFactoryBean.getObject();&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" /><br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;@Bean&nbsp;<br />
<img id="Codehighlighter1_880_961_Open_Image" onclick="this.style.display='none'; Codehighlighter1_880_961_Open_Text.style.display='none'; Codehighlighter1_880_961_Closed_Image.style.display='inline'; Codehighlighter1_880_961_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_880_961_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_880_961_Closed_Text.style.display='none'; Codehighlighter1_880_961_Open_Image.style.display='inline'; Codehighlighter1_880_961_Open_Text.style.display='inline';" alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;DataSource&nbsp;dataSource()&nbsp;</span><span id="Codehighlighter1_880_961_Open_Text"><span style="color: #000000">{&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span>&nbsp;<span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;DriverManagerDataSource(jdbcUrl,&nbsp;username,&nbsp;password);&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="color: #000000">&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span></div>
<p><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"><span style="font-family: 宋体; color: black; font-size: 9pt">为了让这段代码开始生效，我们需要添加如下组件扫描入口到最小化的应用程序上下文配置文件中：</span><br />
</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; height: 34px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><span style="color: #000000">&lt;</span><span style="color: #000000">context:component</span><span style="color: #000000">-</span><span style="color: #000000">scan&nbsp;base</span><span style="color: #000000">-</span><span style="color: #0000ff">package</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">org.example.config</span><span style="color: #000000">"</span><span style="color: #000000">/&gt;</span><span style="color: #000000">&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #000000">&lt;</span><span style="color: #000000">util:properties&nbsp;id</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">jdbcProperties</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;location</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">classpath:org/example/config/jdbc.properties</span><span style="color: #000000">"</span><span style="color: #000000">/&gt;</span><span style="color: #000000">&nbsp;<br />
<img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span></div>
<p>&nbsp; <br />
<strong><span style="font-family: 宋体; color: black; font-size: 9pt">六、在组件中定义</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">bean</span><span style="font-family: 宋体; color: black; font-size: 9pt">的元数据</span>&nbsp;</strong><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"><br />
</span><span style="font-family: 宋体; color: black; font-size: 9pt">感觉</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">Spring</span><span style="font-family: 宋体; color: black; font-size: 9pt">提供了越来越多的注解、元数据，复杂性已经超出了当初带来的方便本身！</span>&nbsp;<span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"><br />
</span><strong><span style="font-family: 宋体; color: black; font-size: 9pt"><br />
七、通用类型转换系统和</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">UI</span><span style="font-family: 宋体; color: black; font-size: 9pt">字段格式化系统</span>&nbsp;</strong><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"><br />
Spring3</span><span style="font-family: 宋体; color: black; font-size: 9pt">加入了一个通用的类型转换系统，目前它被</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">SpEL</span><span style="font-family: 宋体; color: black; font-size: 9pt">用作类型转换，并且可能被一个</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">Spring</span><span style="font-family: 宋体; color: black; font-size: 9pt">容器使用，用于当绑定</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">bean</span><span style="font-family: 宋体; color: black; font-size: 9pt">的属性值的时候进行类型转换。</span>&nbsp;<span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"><br />
</span><span style="font-family: 宋体; color: black; font-size: 9pt">另外，还增加了一个</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">UI</span><span style="font-family: 宋体; color: black; font-size: 9pt">字段格式化系统，它提供了更简单的使用并且更强大的功能以替代</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">UI</span><span style="font-family: 宋体; color: black; font-size: 9pt">环境下的</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">JavaBean</span><span style="font-family: 宋体; color: black; font-size: 9pt">的</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">PropertyEditors</span><span style="font-family: 宋体; color: black; font-size: 9pt">，例如在</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">SpringMVC</span><span style="font-family: 宋体; color: black; font-size: 9pt">中。</span>&nbsp;<span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"><br />
</span><span style="font-family: 宋体; color: black; font-size: 9pt">这个特性要好好研究下，通用类型转换系统如果果如所言的话，带来的好处还是很多的。<br />
</span>&nbsp;<span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"><br />
</span><span style="font-family: 宋体; color: black; font-size: 9pt"><strong>八、数据层</strong></span>&nbsp;<span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"><br />
</span><span style="font-family: 宋体; color: black; font-size: 9pt">对象到</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">XML</span><span style="font-family: 宋体; color: black; font-size: 9pt">的映射功能已经从</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">Spring Web Services</span><span style="font-family: 宋体; color: black; font-size: 9pt">项目移到了</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">Spring</span><span style="font-family: 宋体; color: black; font-size: 9pt">框架核心中。它位于</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">org.springframework.oxm</span><span style="font-family: 宋体; color: black; font-size: 9pt">包中。</span>&nbsp;<span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"><br />
OXM?</span><span style="font-family: 宋体; color: black; font-size: 9pt">研究下！时间真不够！</span>&nbsp;<span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"><br />
<br />
</span><strong><span style="font-family: 宋体; color: black; font-size: 9pt">九、</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">Web</span><span style="font-family: 宋体; color: black; font-size: 9pt">层</span>&nbsp;</strong><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"><br />
</span><span style="font-family: 宋体; color: black; font-size: 9pt">在</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">Web</span><span style="font-family: 宋体; color: black; font-size: 9pt">层最激动人心的新特性莫过于新增的对构件</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">REST</span><span style="font-family: 宋体; color: black; font-size: 9pt">风格的</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">web</span><span style="font-family: 宋体; color: black; font-size: 9pt">服务和</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">web</span><span style="font-family: 宋体; color: black; font-size: 9pt">应用的支持！另外，还新增加了一些任何</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">web</span><span style="font-family: 宋体; color: black; font-size: 9pt">应用都可以使用的新的注解。</span>&nbsp;<span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"><br />
</span><span style="font-family: 宋体; color: black; font-size: 9pt">服务端对于</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">REST</span><span style="font-family: 宋体; color: black; font-size: 9pt">风格的支持，是通过扩展既有的注解驱动的</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">MVC web</span><span style="font-family: 宋体; color: black; font-size: 9pt">框架实现的。</span>&nbsp;<span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"><br />
</span><span style="font-family: 宋体; color: black; font-size: 9pt">客户端的支持则是</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">RestTemplate</span><span style="font-family: 宋体; color: black; font-size: 9pt">类提供的。</span>&nbsp;<span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"><br />
</span><span style="font-family: 宋体; color: black; font-size: 9pt">无论服务端还是客户端</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">REST</span><span style="font-family: 宋体; color: black; font-size: 9pt">功能，都是使用</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">HttpConverter</span><span style="font-family: 宋体; color: black; font-size: 9pt">来简化对</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">HTTP</span><span style="font-family: 宋体; color: black; font-size: 9pt">请求和应答过程中的对象到表现层的转换过程。</span>&nbsp;<span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"><br />
MarshallingHttpMessageConverter</span><span style="font-family: 宋体; color: black; font-size: 9pt">使用了上面提到的</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">&#8220;</span><span style="font-family: 宋体; color: black; font-size: 9pt">对象到</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">XML</span><span style="font-family: 宋体; color: black; font-size: 9pt">的映射机制</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">&#8221;</span><span style="font-family: 宋体; color: black; font-size: 9pt">。</span>&nbsp;<br />
<span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"><br />
</span><strong><span style="font-family: 宋体; color: black; font-size: 9pt">十、</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">@MVC</span><span style="font-family: 宋体; color: black; font-size: 9pt">增强</span>&nbsp;</strong><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"><br />
</span><span style="font-family: 宋体; color: black; font-size: 9pt">新增了诸如</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">@CookieValue </span><span style="font-family: 宋体; color: black; font-size: 9pt">和</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"> @RequestHeaders</span><span style="font-family: 宋体; color: black; font-size: 9pt">这样的注解等。</span>&nbsp;<span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"><br />
<br />
</span><strong><span style="font-family: 宋体; color: black; font-size: 9pt">十一、声明式模型验证</span>&nbsp;</strong><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"><br />
</span><span style="font-family: 宋体; color: black; font-size: 9pt">支持</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">JSR 303</span><span style="font-family: 宋体; color: black; font-size: 9pt">，使用</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">Hibernate Validator</span><span style="font-family: 宋体; color: black; font-size: 9pt">作为实现。</span>&nbsp;<span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"><br />
<br />
</span><strong><span style="font-family: 宋体; color: black; font-size: 9pt">十二、提前对</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">Java EE6</span><span style="font-family: 宋体; color: black; font-size: 9pt">提供支持</span>&nbsp;</strong><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"><br />
</span><span style="font-family: 宋体; color: black; font-size: 9pt">提供了使用</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">@Async</span><span style="font-family: 宋体; color: black; font-size: 9pt">注解对于异步方法调用的支持（或者</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">EJB 3.1</span><span style="font-family: 宋体; color: black; font-size: 9pt">里的</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"> @Asynchronous</span><span style="font-family: 宋体; color: black; font-size: 9pt">）</span>&nbsp;<span style="font-family: 宋体; color: black; font-size: 9pt">另外，新增对</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">JSR 303, JSF 2.0, JPA 2.0</span><span style="font-family: 宋体; color: black; font-size: 9pt">等的支持。</span>&nbsp;<span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"><br />
<br />
</span><strong><span style="font-family: 宋体; color: black; font-size: 9pt">十三、嵌入式数据库的支持</span>&nbsp;</strong><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"><br />
</span><span style="font-family: 宋体; color: black; font-size: 9pt">对于嵌入式的</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">Java</span><span style="font-family: 宋体; color: black; font-size: 9pt">数据库引擎提供了广泛而方便的支持，诸如</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">HSQL, H2, </span><span style="font-family: 宋体; color: black; font-size: 9pt">以及</span><span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt">Derby</span><span style="font-family: 宋体; color: black; font-size: 9pt">等。</span>&nbsp;<span style="font-family: 'Arial', 'sans-serif'; color: black; font-size: 9pt"><br />
</span><span style="font-family: 宋体; color: black; font-size: 9pt">这是不是代表一种潮流呢？数据库向越来越小型化发展，甚至小型化到嵌入式了，我认为这在桌面级应用上还是很有市场的。</span></span></span></p>
<img src ="http://www.blogjava.net/WolfSoft/aggbug/337210.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/WolfSoft/" target="_blank">SuperWolf</a> 2010-11-04 11:15 <a href="http://www.blogjava.net/WolfSoft/archive/2010/11/04/337210.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>