﻿<?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-musiclover</title><link>http://www.blogjava.net/musiclover/</link><description /><language>zh-cn</language><lastBuildDate>Wed, 15 Apr 2026 11:59:49 GMT</lastBuildDate><pubDate>Wed, 15 Apr 2026 11:59:49 GMT</pubDate><ttl>60</ttl><item><title>用Struts2实现在线银行付款</title><link>http://www.blogjava.net/musiclover/archive/2009/10/13/298099.html</link><dc:creator>Jxi</dc:creator><author>Jxi</author><pubDate>Tue, 13 Oct 2009 10:27:00 GMT</pubDate><guid>http://www.blogjava.net/musiclover/archive/2009/10/13/298099.html</guid><wfw:comment>http://www.blogjava.net/musiclover/comments/298099.html</wfw:comment><comments>http://www.blogjava.net/musiclover/archive/2009/10/13/298099.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/musiclover/comments/commentRss/298099.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/musiclover/services/trackbacks/298099.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n...&nbsp;&nbsp;<a href='http://www.blogjava.net/musiclover/archive/2009/10/13/298099.html'>阅读全文</a><img src ="http://www.blogjava.net/musiclover/aggbug/298099.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/musiclover/" target="_blank">Jxi</a> 2009-10-13 18:27 <a href="http://www.blogjava.net/musiclover/archive/2009/10/13/298099.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SSH基础搭建</title><link>http://www.blogjava.net/musiclover/archive/2009/09/30/297020.html</link><dc:creator>Jxi</dc:creator><author>Jxi</author><pubDate>Wed, 30 Sep 2009 07:29:00 GMT</pubDate><guid>http://www.blogjava.net/musiclover/archive/2009/09/30/297020.html</guid><wfw:comment>http://www.blogjava.net/musiclover/comments/297020.html</wfw:comment><comments>http://www.blogjava.net/musiclover/archive/2009/09/30/297020.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/musiclover/comments/commentRss/297020.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/musiclover/services/trackbacks/297020.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Struts2+Hibernate3.0+Spring的基本搭建(非常基础的)<br />
<br />
具体操作步骤截图见附件(源代码不包含lib包):<a title="S2SH截图" href="/Files/musiclover/S2HS.rar">S2SH截图</a><br />
除了操作的配置代码:<br />
WEB-INF下的web.xml的配置:<br />
</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"><span style="color: #008080">&nbsp;1</span>&nbsp;<span style="color: #000000">&lt;?</span><span style="color: #000000">xml&nbsp;version</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">1.0</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;encoding</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"><br />
</span><span style="color: #008080">&nbsp;2</span>&nbsp;<span style="color: #000000">&lt;</span><span style="color: #000000">web</span><span style="color: #000000">-</span><span style="color: #000000">app&nbsp;version</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">2.5</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;xmlns</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">http://java.sun.com/xml/ns/javaee</span><span style="color: #000000">"</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;3</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;xmlns:xsi</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">http://www.w3.org/2001/XMLSchema-instance</span><span style="color: #000000">"</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;4</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;xsi:schemaLocation</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">http://java.sun.com/xml/ns/javaee&nbsp;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;5</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;http:</span><span style="color: #008000">//</span><span style="color: #008000">java.sun.com/xml/ns/javaee/web-app_2_5.xsd"&gt;</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;6</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;!--</span><span style="color: #000000">&nbsp;配置Struts&nbsp;2框架的核心Filter&nbsp;</span><span style="color: #000000">--&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;7</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">filter</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;8</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">filter</span><span style="color: #000000">-</span><span style="color: #000000">name</span><span style="color: #000000">&gt;</span><span style="color: #000000">struts</span><span style="color: #000000">&lt;/</span><span style="color: #000000">filter</span><span style="color: #000000">-</span><span style="color: #000000">name</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;9</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">filter</span><span style="color: #000000">-</span><span style="color: #0000ff">class</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">10</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;org.apache.struts2.dispatcher.FilterDispatcher<br />
</span><span style="color: #008080">11</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">filter</span><span style="color: #000000">-</span><span style="color: #0000ff">class</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">12</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">filter</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">13</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">14</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;!--</span><span style="color: #000000">&nbsp;配置Filter拦截的URL&nbsp;</span><span style="color: #000000">--&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">15</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">filter</span><span style="color: #000000">-</span><span style="color: #000000">mapping</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">16</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">filter</span><span style="color: #000000">-</span><span style="color: #000000">name</span><span style="color: #000000">&gt;</span><span style="color: #000000">struts</span><span style="color: #000000">&lt;/</span><span style="color: #000000">filter</span><span style="color: #000000">-</span><span style="color: #000000">name</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">17</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">url</span><span style="color: #000000">-</span><span style="color: #000000">pattern</span><span style="color: #000000">&gt;</span><span style="color: #008000">/*</span><span style="color: #008000">&lt;/url-pattern&gt;<br />
</span><span style="color: #008080">18</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&lt;/filter-mapping&gt;<br />
</span><span style="color: #008080">19</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;配置Spring&nbsp;--&gt;<br />
</span><span style="color: #008080">20</span>&nbsp;<span style="color: #008000">&lt;context-param&gt;<br />
</span><span style="color: #008080">21</span>&nbsp;<span style="color: #008000">&nbsp;&lt;param-name&gt;contextConfigLocation&lt;/param-name&gt;<br />
</span><span style="color: #008080">22</span>&nbsp;<span style="color: #008000">&nbsp;&lt;param-value&gt;classpath:applicationContext.xml&lt;/param-value&gt;<br />
</span><span style="color: #008080">23</span>&nbsp;<span style="color: #008000">&lt;/context-param&gt;<br />
</span><span style="color: #008080">24</span>&nbsp;<span style="color: #008000"><br />
</span><span style="color: #008080">25</span>&nbsp;<span style="color: #008000">&lt;listener&gt;<br />
</span><span style="color: #008080">26</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&lt;listener-class&gt;org.springframework.web.context.ContextLoaderListener&lt;/listener-class&gt;<br />
</span><span style="color: #008080">27</span>&nbsp;<span style="color: #008000">&lt;/listener&gt;<br />
</span><span style="color: #008080">28</span>&nbsp;<span style="color: #008000"><br />
</span><span style="color: #008080">29</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&lt;welcome-file-list&gt;<br />
</span><span style="color: #008080">30</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;welcome-file&gt;index.jsp&lt;/welcome-file&gt;<br />
</span><span style="color: #008080">31</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&lt;/welcome-file-list&gt;<br />
</span><span style="color: #008080">32</span>&nbsp;<span style="color: #008000">&lt;/web-app&gt;<br />
</span><span style="color: #008080">33</span>&nbsp;</div>
<br />
applicationContext.xml:<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"><span style="color: #008080">&nbsp;1</span>&nbsp;<span style="color: #000000">&lt;?</span><span style="color: #000000">xml&nbsp;version</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">1.0</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;encoding</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"><br />
</span><span style="color: #008080">&nbsp;2</span>&nbsp;<span style="color: #000000">&lt;</span><span style="color: #000000">beans<br />
</span><span style="color: #008080">&nbsp;3</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;xmlns</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">http://www.springframework.org/schema/beans</span><span style="color: #000000">"</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;4</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;xmlns:xsi</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">http://www.w3.org/2001/XMLSchema-instance</span><span style="color: #000000">"</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;5</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;xsi:schemaLocation</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">http://www.springframework.org/schema/beans&nbsp;http://www.springframework.org/schema/beans/spring-beans-2.5.xsd</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;6</span>&nbsp;<span style="color: #000000">&lt;!--</span><span style="color: #000000">&nbsp;Spring&nbsp;风格的Hibernate的配置&nbsp;</span><span style="color: #000000">--&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;7</span>&nbsp;<span style="color: #000000">&lt;!--</span><span style="color: #000000">&nbsp;使用外部属性文件</span><span style="color: #000000">/</span><span style="color: #000000">WEB</span><span style="color: #000000">-</span><span style="color: #000000">INF</span><span style="color: #000000">/</span><span style="color: #000000">jdbc.properties&nbsp;</span><span style="color: #000000">--&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;8</span>&nbsp;<span style="color: #000000">&lt;</span><span style="color: #000000">bean&nbsp;id</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">propertyConfigurer</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">org.springframework.beans.factory.config.PropertyPlaceholderConfigurer</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;<br />
</span><span style="color: #008080">&nbsp;9</span>&nbsp;<span style="color: #000000">&nbsp;&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">location</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;value</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">/WEB-INF/jdbc.properties</span><span style="color: #000000">"</span><span style="color: #000000">&gt;&lt;/</span><span style="color: #000000">property</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">10</span>&nbsp;<span style="color: #000000">&lt;/</span><span style="color: #000000">bean</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">11</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;!--</span><span style="color: #000000">&nbsp;配置数据源&nbsp;</span><span style="color: #000000">--&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">12</span>&nbsp;<span style="color: #000000">&lt;</span><span style="color: #000000">bean&nbsp;id</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">dataSource</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">org.apache.commons.dbcp.BasicDataSource</span><span style="color: #000000">"</span><span style="color: #000000"><br />
</span><span style="color: #008080">13</span>&nbsp;<span style="color: #000000">&nbsp;destroy</span><span style="color: #000000">-</span><span style="color: #000000">method</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">close</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">14</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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">driverClassName</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;value</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">${jdbc.driverClassName}</span><span style="color: #000000">"</span><span style="color: #000000">&gt;&lt;/</span><span style="color: #000000">property</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">15</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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">url</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;value</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">${jdbc.url}</span><span style="color: #000000">"</span><span style="color: #000000">&gt;&lt;/</span><span style="color: #000000">property</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">16</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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">username</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;value</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">${jdbc.username}</span><span style="color: #000000">"</span><span style="color: #000000">&gt;&lt;/</span><span style="color: #000000">property</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">17</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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">password</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;value</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">${jdbc.password}</span><span style="color: #000000">"</span><span style="color: #000000">&gt;&lt;/</span><span style="color: #000000">property</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">18</span>&nbsp;<span style="color: #000000">&lt;/</span><span style="color: #000000">bean</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">19</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">20</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">21</span>&nbsp;<span style="color: #000000">&lt;!--</span><span style="color: #000000">&nbsp;创建SessionFactory实例&nbsp;</span><span style="color: #000000">--&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">22</span>&nbsp;<span style="color: #000000">&lt;</span><span style="color: #000000">bean&nbsp;id</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">sessionFactory</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">org.springframework.orm.hibernate3.LocalSessionFactoryBean</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">23</span>&nbsp;<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">dataSource</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;ref</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">dataSource</span><span style="color: #000000">"</span><span style="color: #000000">&gt;&lt;/</span><span style="color: #000000">property</span><span style="color: #000000">&gt;&lt;!--</span><span style="color: #000000">&nbsp;数据源&nbsp;</span><span style="color: #000000">--&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">24</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">25</span>&nbsp;<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">mappingResources</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">26</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">list</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">27</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">28</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">list</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">29</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">30</span>&nbsp;<span style="color: #000000">&lt;/</span><span style="color: #000000">property</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">31</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">32</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">33</span>&nbsp;<span style="color: #000000">&lt;!--</span><span style="color: #000000">&nbsp;配置数据库方言&nbsp;</span><span style="color: #000000">--&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">34</span>&nbsp;<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">hibernateProperties</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">35</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">props</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">36</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">prop&nbsp;key</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">hibernate.dialect</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">37</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;${hibernate.dialect}<br />
</span><span style="color: #008080">38</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">prop</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">39</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">prop&nbsp;key</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">hibernate.show_sql</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #0000ff">true</span><span style="color: #000000">&lt;/</span><span style="color: #000000">prop</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">40</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">prop&nbsp;key</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">hibernate.generate_satistices</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #0000ff">true</span><span style="color: #000000">&lt;/</span><span style="color: #000000">prop</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">41</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">props</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">42</span>&nbsp;<span style="color: #000000">&lt;/</span><span style="color: #000000">property</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">43</span>&nbsp;<span style="color: #000000">&lt;/</span><span style="color: #000000">bean</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">44</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">45</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">46</span>&nbsp;<span style="color: #000000">&nbsp;</span><span style="color: #000000">&lt;!--</span><span style="color: #000000">&nbsp;使用Hibernate3事务管理配置&nbsp;</span><span style="color: #000000">--&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">47</span>&nbsp;<span style="color: #000000">&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">bean&nbsp;id</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">transactionManager</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">org.springframework.orm.hibernate3.HibernateTransactionManager</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">48</span>&nbsp;<span style="color: #000000">&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">sessionFactory</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;ref</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">sessionFactory</span><span style="color: #000000">"</span><span style="color: #000000">&gt;&lt;/</span><span style="color: #000000">property</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">49</span>&nbsp;<span style="color: #000000">&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">bean</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">50</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">51</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">52</span>&nbsp;<span style="color: #000000">&lt;!--</span><span style="color: #000000">&nbsp;配置HibernateTemplate&nbsp;</span><span style="color: #000000">--&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">53</span>&nbsp;<span style="color: #000000">&lt;</span><span style="color: #000000">bean&nbsp;id</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">hibernateTemplate</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">org.springframework.orm.hibernate3.HibernateTemplate</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">54</span>&nbsp;<span style="color: #000000">&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">sessionFactory</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;ref</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">sessionFactory</span><span style="color: #000000">"</span><span style="color: #000000">&gt;&lt;/</span><span style="color: #000000">property</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">55</span>&nbsp;<span style="color: #000000">&lt;/</span><span style="color: #000000">bean</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">56</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">57</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">58</span>&nbsp;<span style="color: #000000">&lt;/</span><span style="color: #000000">beans</span><span style="color: #000000">&gt;</span></div>
<br />
struts.xml:<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"><span style="color: #008080">&nbsp;1</span>&nbsp;<span style="color: #000000">&lt;?</span><span style="color: #000000">xml&nbsp;version</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">1.0</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;encoding</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">&nbsp;</span><span style="color: #000000">?&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;2</span>&nbsp;<span style="color: #000000">&lt;!</span><span style="color: #000000">DOCTYPE&nbsp;struts&nbsp;PUBLIC<br />
</span><span style="color: #008080">&nbsp;3</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">-//Apache&nbsp;Software&nbsp;Foundation//DTD&nbsp;Struts&nbsp;Configuration&nbsp;2.0//EN</span><span style="color: #000000">"</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;4</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">http://struts.apache.org/dtds/struts-2.0.dtd</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;5</span>&nbsp;<span style="color: #000000">&lt;</span><span style="color: #000000">struts</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;6</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #000000">&lt;!--</span><span style="color: #000000">&nbsp;包含外部struts的配置&nbsp;</span><span style="color: #000000">--&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;7</span>&nbsp;<span style="color: #000000">&nbsp;</span><span style="color: #000000">&lt;!--</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">include&nbsp;file</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">filename</span><span style="color: #000000">"</span><span style="color: #000000">&gt;&lt;/</span><span style="color: #000000">include</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #000000">--&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;8</span>&nbsp;<span style="color: #000000">&nbsp;<br />
</span><span style="color: #008080">&nbsp;9</span>&nbsp;<span style="color: #000000">&nbsp;</span><span style="color: #000000">&lt;!--</span><span style="color: #000000">&nbsp;配置UTF</span><span style="color: #000000">-</span><span style="color: #000000">8</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">--&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">10</span>&nbsp;<span style="color: #000000">&lt;</span><span style="color: #000000">constant&nbsp;name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">struts.i18n.encoding</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;value</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;&lt;/</span><span style="color: #000000">constant</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">11</span>&nbsp;<span style="color: #000000">&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">struts2</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">extends</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">struts-default</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">12</span>&nbsp;<span style="color: #000000">&nbsp;<br />
</span><span style="color: #008080">13</span>&nbsp;<span style="color: #000000">&nbsp;</span><span style="color: #000000">&lt;!--</span><span style="color: #000000">&nbsp;写Action的配置&nbsp;&nbsp;</span><span style="color: #000000">--&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">14</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;<br />
</span><span style="color: #008080">15</span>&nbsp;<span style="color: #000000">&nbsp;<br />
</span><span style="color: #008080">16</span>&nbsp;<span style="color: #000000">&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #0000ff">package</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">17</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;<br />
</span><span style="color: #008080">18</span>&nbsp;<span style="color: #000000">&lt;/</span><span style="color: #000000">struts</span><span style="color: #000000">&gt;</span></div>
hibernate.cfg.xml:什么都做，全交给Spring管理<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"><span style="color: #008080">&nbsp;1</span>&nbsp;<span style="color: #000000">&lt;?</span><span style="color: #000000">xml&nbsp;version</span><span style="color: #000000">=</span><span style="color: #000000">'</span><span style="color: #000000">1.0</span><span style="color: #000000">'</span><span style="color: #000000">&nbsp;encoding</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"><br />
</span><span style="color: #008080">&nbsp;2</span>&nbsp;<span style="color: #000000">&lt;!</span><span style="color: #000000">DOCTYPE&nbsp;hibernate</span><span style="color: #000000">-</span><span style="color: #000000">configuration&nbsp;PUBLIC<br />
</span><span style="color: #008080">&nbsp;3</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">-//Hibernate/Hibernate&nbsp;Configuration&nbsp;DTD&nbsp;3.0//EN</span><span style="color: #000000">"</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;4</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;5</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;6</span>&nbsp;<span style="color: #000000">&lt;!--</span><span style="color: #000000">&nbsp;Generated&nbsp;by&nbsp;MyEclipse&nbsp;Hibernate&nbsp;Tools.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">--&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;7</span>&nbsp;<span style="color: #000000">&lt;</span><span style="color: #000000">hibernate</span><span style="color: #000000">-</span><span style="color: #000000">configuration</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;8</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;9</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">session</span><span style="color: #000000">-</span><span style="color: #000000">factory</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">10</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">11</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">session</span><span style="color: #000000">-</span><span style="color: #000000">factory</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">12</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">13</span>&nbsp;<span style="color: #000000">&lt;/</span><span style="color: #000000">hibernate</span><span style="color: #000000">-</span><span style="color: #000000">configuration</span><span style="color: #000000">&gt;</span></div>
WEB-INF下的数据库配置文件 jdbc.properties<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"><span style="color: #008080">1</span>&nbsp;<span style="color: #000000">hibernate.dialect</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;org.hibernate.dialect.MySQLDialect<br />
</span><span style="color: #008080">2</span>&nbsp;<span style="color: #000000">jdbc.driverClassName</span><span style="color: #000000">=</span><span style="color: #000000">com.mysql.jdbc.Driver<br />
</span><span style="color: #008080">3</span>&nbsp;<span style="color: #000000">jdbc.url</span><span style="color: #000000">=</span><span style="color: #000000">jdbc\:mysql\:</span><span style="color: #008000">//</span><span style="color: #008000">localhost\:3306/bookbooks</span><span style="color: #008000"><br />
</span><span style="color: #008080">4</span>&nbsp;<span style="color: #000000">jdbc.username</span><span style="color: #000000">=</span><span style="color: #000000">root<br />
</span><span style="color: #008080">5</span>&nbsp;<span style="color: #000000">jdbc.password</span><span style="color: #000000">=</span><span style="color: #000000">123456</span><span style="color: #000000"><br />
</span><span style="color: #008080">6</span>&nbsp;</div>
<br />
<br />
<br />
<img src ="http://www.blogjava.net/musiclover/aggbug/297020.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/musiclover/" target="_blank">Jxi</a> 2009-09-30 15:29 <a href="http://www.blogjava.net/musiclover/archive/2009/09/30/297020.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring @AspectJ</title><link>http://www.blogjava.net/musiclover/archive/2009/09/14/295059.html</link><dc:creator>Jxi</dc:creator><author>Jxi</author><pubDate>Mon, 14 Sep 2009 12:01:00 GMT</pubDate><guid>http://www.blogjava.net/musiclover/archive/2009/09/14/295059.html</guid><wfw:comment>http://www.blogjava.net/musiclover/comments/295059.html</wfw:comment><comments>http://www.blogjava.net/musiclover/archive/2009/09/14/295059.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/musiclover/comments/commentRss/295059.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/musiclover/services/trackbacks/295059.html</trackback:ping><description><![CDATA[<p>准备工作:需要&nbsp; spring/lib/asm 下的3个包:asm.jar&nbsp; asm-commons.jar asm-util.jar <br />
spring/lib/aspectj&nbsp; 下的2个包 aspectjrt.jar&nbsp; 和aspectjweaver.jar<br />
<strong>使用@AspectJ的小例子:</strong><br />
</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_25_73_Open_Image" onclick="this.style.display='none'; Codehighlighter1_25_73_Open_Text.style.display='none'; Codehighlighter1_25_73_Closed_Image.style.display='inline'; Codehighlighter1_25_73_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">interface</span><span style="color: #000000">&nbsp;Company&nbsp;</span><span id="Codehighlighter1_25_73_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&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;descript();<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&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;ss();<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div>
<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_44_240_Open_Image" onclick="this.style.display='none'; Codehighlighter1_44_240_Open_Text.style.display='none'; Codehighlighter1_44_240_Closed_Image.style.display='inline'; Codehighlighter1_44_240_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_44_240_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_44_240_Closed_Text.style.display='none'; Codehighlighter1_44_240_Open_Image.style.display='inline'; Codehighlighter1_44_240_Open_Text.style.display='inline';" alt="" 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;stockCompany&nbsp;</span><span style="color: #0000ff">implements</span><span style="color: #000000">&nbsp;Company</span><span id="Codehighlighter1_44_240_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br />
<img id="Codehighlighter1_71_120_Open_Image" onclick="this.style.display='none'; Codehighlighter1_71_120_Open_Text.style.display='none'; Codehighlighter1_71_120_Closed_Image.style.display='inline'; Codehighlighter1_71_120_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_71_120_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_71_120_Closed_Text.style.display='none'; Codehighlighter1_71_120_Open_Image.style.display='inline'; Codehighlighter1_71_120_Open_Text.style.display='inline';" alt="" 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;descript()&nbsp;</span><span id="Codehighlighter1_71_120_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.print(</span><span style="color: #000000">"</span><span style="color: #000000">This&nbsp;is&nbsp;a&nbsp;stock&nbsp;market</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" 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">另外添加一个内嵌descript()的函数&nbsp;调用后不会拦截里面的descript函数</span><span style="color: #008000"><br />
<img id="Codehighlighter1_185_238_Open_Image" onclick="this.style.display='none'; Codehighlighter1_185_238_Open_Text.style.display='none'; Codehighlighter1_185_238_Closed_Image.style.display='inline'; Codehighlighter1_185_238_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_185_238_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_185_238_Closed_Text.style.display='none'; Codehighlighter1_185_238_Open_Image.style.display='inline'; Codehighlighter1_185_238_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /></span><span style="color: #000000">&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;ss()</span><span id="Codehighlighter1_185_238_Open_Text"><span style="color: #000000">{<br />
<img alt="" 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 alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;descript();<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div>
<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 alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.aspectj.lang.annotation.Aspect;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.aspectj.lang.annotation.Before;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />@Aspect<br />
<img id="Codehighlighter1_127_255_Open_Image" onclick="this.style.display='none'; Codehighlighter1_127_255_Open_Text.style.display='none'; Codehighlighter1_127_255_Closed_Image.style.display='inline'; Codehighlighter1_127_255_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_127_255_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_127_255_Closed_Text.style.display='none'; Codehighlighter1_127_255_Open_Image.style.display='inline'; Codehighlighter1_127_255_Open_Text.style.display='inline';" alt="" 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;PreDescriptAspect&nbsp;</span><span id="Codehighlighter1_127_255_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />@Before(</span><span style="color: #000000">"</span><span style="color: #000000">execution(*&nbsp;descript(..))</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
<img id="Codehighlighter1_195_253_Open_Image" onclick="this.style.display='none'; Codehighlighter1_195_253_Open_Text.style.display='none'; Codehighlighter1_195_253_Closed_Image.style.display='inline'; Codehighlighter1_195_253_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_195_253_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_195_253_Closed_Text.style.display='none'; Codehighlighter1_195_253_Open_Image.style.display='inline'; Codehighlighter1_195_253_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&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;beforeDescript()</span><span id="Codehighlighter1_195_253_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.print(</span><span style="color: #000000">"</span><span style="color: #000000">Here&nbsp;Is&nbsp;My&nbsp;Company&nbsp;Description!</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div>
<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 alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.springframework.aop.aspectj.annotation.AspectJProxyFactory;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img id="Codehighlighter1_102_380_Open_Image" onclick="this.style.display='none'; Codehighlighter1_102_380_Open_Text.style.display='none'; Codehighlighter1_102_380_Closed_Image.style.display='inline'; Codehighlighter1_102_380_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_102_380_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_102_380_Closed_Text.style.display='none'; Codehighlighter1_102_380_Open_Image.style.display='inline'; Codehighlighter1_102_380_Open_Text.style.display='inline';" alt="" 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;stockCompanyTest&nbsp;</span><span id="Codehighlighter1_102_380_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_143_378_Open_Image" onclick="this.style.display='none'; Codehighlighter1_143_378_Open_Text.style.display='none'; Codehighlighter1_143_378_Closed_Image.style.display='inline'; Codehighlighter1_143_378_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_143_378_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_143_378_Closed_Text.style.display='none'; Codehighlighter1_143_378_Open_Image.style.display='inline'; Codehighlighter1_143_378_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&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)</span><span id="Codehighlighter1_143_378_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;Company&nbsp;target</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;stockCompany();<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;AspectJProxyFactory&nbsp;factory</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;AspectJProxyFactory();<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;factory.setTarget(target);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;factory.addAspect(PreDescriptAspect.</span><span style="color: #0000ff">class</span><span style="color: #000000">);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;Company&nbsp;proxy</span><span style="color: #000000">=</span><span style="color: #000000">factory.getProxy();<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;proxy.descript();<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;proxy.ss();<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div>
<br />
<br />
<img src ="http://www.blogjava.net/musiclover/aggbug/295059.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/musiclover/" target="_blank">Jxi</a> 2009-09-14 20:01 <a href="http://www.blogjava.net/musiclover/archive/2009/09/14/295059.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring AOP 学习笔记</title><link>http://www.blogjava.net/musiclover/archive/2009/08/23/292311.html</link><dc:creator>Jxi</dc:creator><author>Jxi</author><pubDate>Sun, 23 Aug 2009 14:52:00 GMT</pubDate><guid>http://www.blogjava.net/musiclover/archive/2009/08/23/292311.html</guid><wfw:comment>http://www.blogjava.net/musiclover/comments/292311.html</wfw:comment><comments>http://www.blogjava.net/musiclover/archive/2009/08/23/292311.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/musiclover/comments/commentRss/292311.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/musiclover/services/trackbacks/292311.html</trackback:ping><description><![CDATA[<span style="font-family: Tahoma"><span style="font-size: 12pt"><span style="font-family: Tahoma">AOP&nbsp; Aspect Oriented Programing&nbsp; 面向方面编程<br />
AOP 术语<br />
连接点:(Joinpoint)&nbsp;&nbsp;&nbsp; 程序执行的特定位置(类开始初始化前、类初始化后、调用前后、异常抛出后)<br />
切点:&nbsp;&nbsp;&nbsp;(PointCut)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;程序类中客观存在的事物（类中的方法）<br />
增强&nbsp;:&nbsp;&nbsp;(Advice)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;置入到目标类Joinpint的一段代码<br />
目标对象:(Target)&nbsp;&nbsp; 引介(Introduction)&nbsp; 织入(Weaving)&nbsp; 代理(Proxy) 切面(Aspect):切点和增强的组成&nbsp;<br />
&nbsp;<br />
基础知识: Spring Aop :使用动态代理技术在运行期间织入增强代码<br />
</span></span>ProxyFactory 代理工厂采用JDK代理或CGLib代理技术<br />
<strong style="font-size: 14pt">JDK 动态代理:</strong><br />
1.定义UserService接口函数:<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_29_61_Open_Image" onclick="this.style.display='none'; Codehighlighter1_29_61_Open_Text.style.display='none'; Codehighlighter1_29_61_Closed_Image.style.display='inline'; Codehighlighter1_29_61_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_29_61_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_29_61_Closed_Text.style.display='none'; Codehighlighter1_29_61_Open_Image.style.display='inline'; Codehighlighter1_29_61_Open_Text.style.display='inline';" alt="" 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">interface</span><span style="color: #000000">&nbsp;UserService&nbsp;</span><span id="Codehighlighter1_29_61_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;addUser(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;id);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div>
2.UserServiceImpl<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_51_124_Open_Image" onclick="this.style.display='none'; Codehighlighter1_51_124_Open_Text.style.display='none'; Codehighlighter1_51_124_Closed_Image.style.display='inline'; Codehighlighter1_51_124_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_51_124_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_51_124_Closed_Text.style.display='none'; Codehighlighter1_51_124_Open_Image.style.display='inline'; Codehighlighter1_51_124_Open_Text.style.display='inline';" alt="" 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;UserServiceImpl&nbsp;</span><span style="color: #0000ff">implements</span><span style="color: #000000">&nbsp;UserService</span><span id="Codehighlighter1_51_124_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_81_122_Open_Image" onclick="this.style.display='none'; Codehighlighter1_81_122_Open_Text.style.display='none'; Codehighlighter1_81_122_Closed_Image.style.display='inline'; Codehighlighter1_81_122_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_81_122_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_81_122_Closed_Text.style.display='none'; Codehighlighter1_81_122_Open_Image.style.display='inline'; Codehighlighter1_81_122_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&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;addUser(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;id)</span><span id="Codehighlighter1_81_122_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">添加一个用户中&nbsp;：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">id);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div>
3.ProxyHandler<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 alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.lang.reflect.InvocationHandler;<br />
<img alt="" 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 alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img id="Codehighlighter1_133_447_Open_Image" onclick="this.style.display='none'; Codehighlighter1_133_447_Open_Text.style.display='none'; Codehighlighter1_133_447_Closed_Image.style.display='inline'; Codehighlighter1_133_447_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_133_447_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_133_447_Closed_Text.style.display='none'; Codehighlighter1_133_447_Open_Image.style.display='inline'; Codehighlighter1_133_447_Open_Text.style.display='inline';" alt="" 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;ProxyHandler&nbsp;</span><span style="color: #0000ff">implements</span><span style="color: #000000">&nbsp;InvocationHandler</span><span id="Codehighlighter1_133_447_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;Object&nbsp;target;<br />
<img id="Codehighlighter1_199_228_Open_Image" onclick="this.style.display='none'; Codehighlighter1_199_228_Open_Text.style.display='none'; Codehighlighter1_199_228_Closed_Image.style.display='inline'; Codehighlighter1_199_228_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_199_228_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_199_228_Closed_Text.style.display='none'; Codehighlighter1_199_228_Open_Image.style.display='inline'; Codehighlighter1_199_228_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;&nbsp;ProxyHandler(Object&nbsp;target)</span><span id="Codehighlighter1_199_228_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.target</span><span style="color: #000000">=</span><span style="color: #000000">target;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;Object&nbsp;invoke(Object&nbsp;proxy,&nbsp;Method&nbsp;method,&nbsp;Object[]&nbsp;args)<br />
<img id="Codehighlighter1_318_445_Open_Image" onclick="this.style.display='none'; Codehighlighter1_318_445_Open_Text.style.display='none'; Codehighlighter1_318_445_Closed_Image.style.display='inline'; Codehighlighter1_318_445_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_318_445_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_318_445_Closed_Text.style.display='none'; Codehighlighter1_318_445_Open_Image.style.display='inline'; Codehighlighter1_318_445_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;Throwable&nbsp;</span><span id="Codehighlighter1_318_445_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&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 alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object&nbsp;obj</span><span style="color: #000000">=</span><span style="color: #000000">method.invoke(target,args);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&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 alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;obj;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div>
TestProxyHandler<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 alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.lang.reflect.Proxy;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img id="Codehighlighter1_63_374_Open_Image" onclick="this.style.display='none'; Codehighlighter1_63_374_Open_Text.style.display='none'; Codehighlighter1_63_374_Closed_Image.style.display='inline'; Codehighlighter1_63_374_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_63_374_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_63_374_Closed_Text.style.display='none'; Codehighlighter1_63_374_Open_Image.style.display='inline'; Codehighlighter1_63_374_Open_Text.style.display='inline';" alt="" 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;ProxyHandlerTest&nbsp;</span><span id="Codehighlighter1_63_374_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_105_372_Open_Image" onclick="this.style.display='none'; Codehighlighter1_105_372_Open_Text.style.display='none'; Codehighlighter1_105_372_Closed_Image.style.display='inline'; Codehighlighter1_105_372_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_105_372_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_105_372_Closed_Text.style.display='none'; Codehighlighter1_105_372_Open_Image.style.display='inline'; Codehighlighter1_105_372_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&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[])</span><span id="Codehighlighter1_105_372_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UserService&nbsp;target</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;UserServiceImpl();<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ProxyHandler&nbsp;handler</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ProxyHandler(target);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UserService&nbsp;proxy</span><span style="color: #000000">=</span><span style="color: #000000">(UserService)Proxy.newProxyInstance(<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;target.getClass().getClassLoader(),<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;target.getClass().getInterfaces(),<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;handler);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;proxy.addUser(</span><span style="color: #000000">100</span><span style="color: #000000">);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div>
<strong style="font-size: 12pt">CGLib 代理:</strong><br />
AddUserService接口:<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"><span style="color: #000000">package&nbsp;CGlib.Text.Service;<br />
<br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">interface</span><span style="color: #000000">&nbsp;AddUserService&nbsp;{<br />
&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;addUser(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;id);<br />
}<br />
</span></div>
<br />
AddUserServiceImpl 实现类:<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"><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;CGlib.Text.Service;<br />
<br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;AddUserServiceImpl&nbsp;</span><span style="color: #0000ff">implements</span><span style="color: #000000">&nbsp;AddUserService&nbsp;{<br />
<br />
&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;addUser(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;id)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">添加用户ID中:</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">id);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
</span></div>
CglibProxy 代理类:<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 alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;CGlib.Text.Service;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" 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 alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;net.sf.cglib.proxy.Enhancer;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;net.sf.cglib.proxy.MethodInterceptor;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;net.sf.cglib.proxy.MethodProxy;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img id="Codehighlighter1_238_911_Open_Image" onclick="this.style.display='none'; Codehighlighter1_238_911_Open_Text.style.display='none'; Codehighlighter1_238_911_Closed_Image.style.display='inline'; Codehighlighter1_238_911_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_238_911_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_238_911_Closed_Text.style.display='none'; Codehighlighter1_238_911_Open_Image.style.display='inline'; Codehighlighter1_238_911_Open_Text.style.display='inline';" alt="" 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;CglibProxy&nbsp;</span><span style="color: #0000ff">implements</span><span style="color: #000000">&nbsp;MethodInterceptor</span><span id="Codehighlighter1_238_911_Open_Text"><span style="color: #000000">{<br />
<img alt="" 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;Enhancer&nbsp;enhancer</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Enhancer();<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;@SuppressWarnings(</span><span style="color: #000000">"</span><span style="color: #000000">unchecked</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
<img id="Codehighlighter1_351_447_Open_Image" onclick="this.style.display='none'; Codehighlighter1_351_447_Open_Text.style.display='none'; Codehighlighter1_351_447_Closed_Image.style.display='inline'; Codehighlighter1_351_447_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_351_447_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_351_447_Closed_Text.style.display='none'; Codehighlighter1_351_447_Open_Image.style.display='inline'; Codehighlighter1_351_447_Open_Text.style.display='inline';" alt="" 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;Object&nbsp;getProxy(Class&nbsp;clazz)</span><span id="Codehighlighter1_351_447_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;enhancer.setSuperclass(clazz);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;enhancer.setCallback(</span><span style="color: #0000ff">this</span><span style="color: #000000">);<br />
<img alt="" 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;enhancer.create();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br />
<img alt="" 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;Object&nbsp;intercept(Object&nbsp;obj,&nbsp;Method&nbsp;method,&nbsp;Object[]&nbsp;args,<br />
<img id="Codehighlighter1_556_906_Open_Image" onclick="this.style.display='none'; Codehighlighter1_556_906_Open_Text.style.display='none'; Codehighlighter1_556_906_Closed_Image.style.display='inline'; Codehighlighter1_556_906_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_556_906_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_556_906_Closed_Text.style.display='none'; Codehighlighter1_556_906_Open_Image.style.display='inline'; Codehighlighter1_556_906_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MethodProxy&nbsp;proxy)&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;Throwable&nbsp;</span><span id="Codehighlighter1_556_906_Open_Text"><span style="color: #000000">{<br />
<img alt="" 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 alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.print(method.getName());<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.print(obj.getClass().getName()</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">);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.print(args.getClass().getName());<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object&nbsp;result</span><span style="color: #000000">=</span><span style="color: #000000">proxy.invokeSuper(obj,&nbsp;args);<br />
<img alt="" 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">+</span><span style="color: #000000">args.toString());<br />
<img alt="" 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 alt="" 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">&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub</span><span style="color: #008000"><br />
<img alt="" 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">return</span><span style="color: #000000">&nbsp;result;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div>
<br />
CglibProxyTest:测试类<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 alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;CGlib.Text.Service;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
<img id="Codehighlighter1_57_271_Open_Image" onclick="this.style.display='none'; Codehighlighter1_57_271_Open_Text.style.display='none'; Codehighlighter1_57_271_Closed_Image.style.display='inline'; Codehighlighter1_57_271_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_57_271_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_57_271_Closed_Text.style.display='none'; Codehighlighter1_57_271_Open_Image.style.display='inline'; Codehighlighter1_57_271_Open_Text.style.display='inline';" alt="" 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;CglibProxyTest&nbsp;</span><span id="Codehighlighter1_57_271_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_98_268_Open_Image" onclick="this.style.display='none'; Codehighlighter1_98_268_Open_Text.style.display='none'; Codehighlighter1_98_268_Closed_Image.style.display='inline'; Codehighlighter1_98_268_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_98_268_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_98_268_Closed_Text.style.display='none'; Codehighlighter1_98_268_Open_Image.style.display='inline'; Codehighlighter1_98_268_Open_Text.style.display='inline';" alt="" 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)</span><span id="Codehighlighter1_98_268_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CglibProxy&nbsp;proxy</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;CglibProxy();<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AddUserServiceImpl&nbsp;userService</span><span style="color: #000000">=</span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(AddUserServiceImpl)proxy.getProxy(AddUserServiceImpl.</span><span style="color: #0000ff">class</span><span style="color: #000000">);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;userService.addUser(</span><span style="color: #000000">100</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div>
<br />
<strong>对JDK动态代理和Cglib动态代理的理解：<br />
</strong>JDK&nbsp;&nbsp; 代理时性能高，但生成代理对象时运行性能较低<br />
Cglib 代理时性能低，但生成代理对象时运行性能较高<br />
所以：单例Singleton 时采用CGLib代理。<br />
<br />
</span>
<img src ="http://www.blogjava.net/musiclover/aggbug/292311.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/musiclover/" target="_blank">Jxi</a> 2009-08-23 22:52 <a href="http://www.blogjava.net/musiclover/archive/2009/08/23/292311.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring </title><link>http://www.blogjava.net/musiclover/archive/2009/07/25/288336.html</link><dc:creator>Jxi</dc:creator><author>Jxi</author><pubDate>Sat, 25 Jul 2009 06:57:00 GMT</pubDate><guid>http://www.blogjava.net/musiclover/archive/2009/07/25/288336.html</guid><wfw:comment>http://www.blogjava.net/musiclover/comments/288336.html</wfw:comment><comments>http://www.blogjava.net/musiclover/archive/2009/07/25/288336.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/musiclover/comments/commentRss/288336.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/musiclover/services/trackbacks/288336.html</trackback:ping><description><![CDATA[&nbsp;
<p style="text-align: left" align="left"><strong><span style="font-size: 18pt; font-family: 宋体">Spring</span></strong></p>
<table cellspacing="0" cellpadding="0" border="0">
    <tbody>
        <tr>
            <td style="padding-right: 0cm; padding-left: 0cm; padding-bottom: 0cm; padding-top: 0cm" valign="top"></td>
            <td style="padding-right: 0cm; padding-left: 0cm; padding-bottom: 0cm; width: 60pt; padding-top: 0cm" valign="top" width="80">
            <p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">Important&nbsp;</span></p>
            </td>
            <td style="padding-right: 0cm; padding-left: 0cm; padding-bottom: 0cm; padding-top: 0cm" valign="top">
            <p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">Spring is an <em>application framework</em>. Unlike single-tier frameworks such as Struts or Hibernate, Spring aims to help structure whole applications in a consistent, productive manner, pulling together best-of-breed single-tier frameworks to create a coherent architecture.</span></p>
            </td>
        </tr>
    </tbody>
</table>
<p style="text-align: left" align="left"><strong><span style="font-size: 13.5pt; font-family: 宋体">Problems with the Traditional Approach to J2EE</span></strong></p>
<p style="text-align: left" align="left"><strong><span style="font-size: 13.5pt; font-family: 宋体">传统J2EE方法存在的问题</span></strong></p>
<ul type="disc">
    <li style="text-align: left; tab-stops: list 36.0pt"><strong><span style="font-size: 12pt; font-family: 宋体">J2EE applications tend to contain excessive amounts of "plumbing" code.</span></strong><span style="font-size: 12pt; font-family: 宋体">多</span></li>
    <li style="text-align: left; tab-stops: list 36.0pt"><strong><span style="font-size: 12pt; font-family: 宋体">Many J2EE applications use a distributed object model where this is inappropriate.</span></strong><strong><span style="font-size: 12pt; font-family: 宋体">杂</span></strong></li>
    <li style="text-align: left; tab-stops: list 36.0pt"><strong><span style="font-size: 12pt; font-family: 宋体">The EJB component model is unduly complex.</span></strong><span style="font-size: 12pt; font-family: 宋体">不当</span></li>
    <li style="text-align: left; tab-stops: list 36.0pt"><strong><span style="font-size: 12pt; font-family: 宋体">EJB is overused.</span></strong><span style="font-size: 12pt; font-family: 宋体">过度使用</span></li>
    <li style="text-align: left; tab-stops: list 36.0pt"><strong><span style="font-size: 12pt; font-family: 宋体">Many "J2EE design patterns" are not, in fact, design patterns, but workarounds for technology limitations.</span></strong><span style="font-size: 12pt; font-family: 宋体">技术跟不上</span></li>
    <li style="text-align: left; tab-stops: list 36.0pt"><strong><span style="font-size: 12pt; font-family: 宋体">J2EE applications are hard to unit test.</span></strong><span style="font-size: 12pt; font-family: 宋体">测试难</span></li>
    <li style="text-align: left; tab-stops: list 36.0pt"><strong><span style="font-size: 12pt; font-family: 宋体">Certain J2EE technologies have simply failed.</span></strong></li>
</ul>
<p style="text-align: left" align="left"><strong><span style="font-size: 13.5pt; font-family: 宋体">Enter Spring</span></strong></p>
<p style="text-align: left" align="left"><strong><span style="font-size: 13.5pt; font-family: 宋体">接触Spring</span></strong></p>
<ul type="disc">
    <li style="text-align: left; tab-stops: list 36.0pt"><strong><em><span style="font-size: 12pt; font-family: 宋体">Inversion of Control </span></em></strong><strong><span style="font-size: 12pt; font-family: 宋体">container:</span></strong><span style="font-size: 12pt; font-family: 宋体">倒置控制</span></li>
    <li style="text-align: left; tab-stops: list 36.0pt"><strong><span style="font-size: 12pt; font-family: 宋体">Aspect-Oriented Programming (AOP) framework:</span></strong></li>
    <li style="text-align: left; tab-stops: list 36.0pt"><strong><span style="font-size: 12pt; font-family: 宋体">Data access abstraction:</span></strong></li>
    <li style="text-align: left; tab-stops: list 36.0pt"><strong><span style="font-size: 12pt; font-family: 宋体">JDBC simplification:</span></strong></li>
    <li style="text-align: left; tab-stops: list 36.0pt"><strong><span style="font-size: 12pt; font-family: 宋体">Transaction management:</span></strong></li>
    <li style="text-align: left; tab-stops: list 36.0pt"><strong><span style="font-size: 12pt; font-family: 宋体">MVC web framework:</span></strong></li>
    <li style="text-align: left; tab-stops: list 36.0pt"><strong><span style="font-size: 12pt; font-family: 宋体">Simplification for working with JNDI, JTA, and other J2EE APIs:</span></strong></li>
    <li style="text-align: left; tab-stops: list 36.0pt"><strong><span style="font-size: 12pt; font-family: 宋体">Lightweight remoting:</span></strong></li>
    <li style="text-align: left; tab-stops: list 36.0pt"><strong><span style="font-size: 12pt; font-family: 宋体">JMS support:</span></strong></li>
    <li style="text-align: left; tab-stops: list 36.0pt"><strong><span style="font-size: 12pt; font-family: 宋体">JMX support:</span></strong></li>
    <li style="text-align: left; tab-stops: list 36.0pt"><strong><span style="font-size: 12pt; font-family: 宋体">Support for a comprehensive testing strategy for application developers:</span></strong></li>
</ul>
<p>The key Spring values can be summarized as follows:</p>
<p style="margin-left: 36pt; text-indent: -18pt; tab-stops: list 36.0pt"><span style="font-size: 10pt; font-family: Symbol">&#183;<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong>Spring is a non-invasive framework.</strong>非侵入 </p>
<p style="margin-left: 36pt; text-indent: -18pt; tab-stops: list 36.0pt"><span style="font-size: 10pt; font-family: Symbol">&#183;<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong>Spring provides a consistent programming model, usable in any environment. </strong></p>
<p style="margin-left: 36pt; text-indent: -18pt; tab-stops: list 36.0pt"><span style="font-size: 10pt; font-family: Symbol">&#183;<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong>Spring aims to promote code reuse.</strong>复用</p>
<p style="margin-left: 36pt; text-indent: -18pt; tab-stops: list 36.0pt"><span style="font-size: 10pt; font-family: Symbol">&#183;<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong>Spring aims to facilitate Object Oriented design in J2EE applications.</strong></p>
<p style="margin-left: 36pt; text-indent: -18pt; tab-stops: list 36.0pt"><span style="font-size: 10pt; font-family: Symbol">&#183;<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong>Spring aims to facilitate good programming practice, such as programming to interfaces, rather than classes.面向</strong>接口</p>
<p style="margin-left: 36pt; text-indent: -18pt; tab-stops: list 36.0pt"><span style="font-size: 10pt; font-family: Symbol">&#183;<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong>Spring promotes pluggability.</strong>性能</p>
<p style="margin-left: 36pt; text-indent: -18pt; tab-stops: list 36.0pt"><span style="font-size: 10pt; font-family: Symbol">&#183;<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong>Spring facilitates the extraction of configuration values from Java code into XML or properties files. </strong></p>
<p style="margin-left: 36pt; text-indent: -18pt; tab-stops: list 36.0pt"><span style="font-size: 10pt; font-family: Symbol">&#183;<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong>Spring is designed so that applications using it are as easy as possible to test.</strong></p>
<p style="margin-left: 36pt; text-indent: -18pt; tab-stops: list 36.0pt"><span style="font-size: 10pt; font-family: Symbol">&#183;<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong>Spring is consistent.</strong></p>
<p style="margin-left: 36pt; text-indent: -18pt; tab-stops: list 36.0pt"><span style="font-size: 10pt; font-family: Symbol">&#183;<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong>Spring promotes architectural choice. </strong></p>
<p style="margin-left: 36pt; text-indent: -18pt; tab-stops: list 36.0pt"><span style="font-size: 10pt; font-family: Symbol">&#183;<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong>Spring does not reinvent the wheel.</strong></p>
 <img src ="http://www.blogjava.net/musiclover/aggbug/288336.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/musiclover/" target="_blank">Jxi</a> 2009-07-25 14:57 <a href="http://www.blogjava.net/musiclover/archive/2009/07/25/288336.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>