﻿<?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-liuzheng-文章分类-Spring</title><link>http://www.blogjava.net/liuzheng/category/25539.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 29 Apr 2008 06:06:42 GMT</lastBuildDate><pubDate>Tue, 29 Apr 2008 06:06:42 GMT</pubDate><ttl>60</ttl><item><title>Spring事务配置笔记(实现不同Service间调用事务) </title><link>http://www.blogjava.net/liuzheng/articles/197097.html</link><dc:creator>刘铮 </dc:creator><author>刘铮 </author><pubDate>Tue, 29 Apr 2008 03:58:00 GMT</pubDate><guid>http://www.blogjava.net/liuzheng/articles/197097.html</guid><wfw:comment>http://www.blogjava.net/liuzheng/comments/197097.html</wfw:comment><comments>http://www.blogjava.net/liuzheng/articles/197097.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liuzheng/comments/commentRss/197097.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liuzheng/services/trackbacks/197097.html</trackback:ping><description><![CDATA[<strong>一、关键配置示例：</strong> <br />
<span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">bean&nbsp;</span><span style="color: rgb(255,0,0)">id</span><span style="color: rgb(0,0,255)">="sessionFactory"</span><span style="color: rgb(255,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;class</span><span style="color: rgb(0,0,255)">="org.springframework.orm.hibernate3.LocalSessionFactoryBean"</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">property&nbsp;</span><span style="color: rgb(255,0,0)">name</span><span style="color: rgb(0,0,255)">="dataSource"</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">ref&nbsp;</span><span style="color: rgb(255,0,0)">local</span><span style="color: rgb(0,0,255)">="dataSource"</span><span style="color: rgb(255,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">/&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">property</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,128,0)">&lt;!--</span><span style="color: rgb(0,128,0)">&nbsp;bean&nbsp;id="transactionManager"&nbsp;class="org.springframework.transaction.jta.JtaTransactionManager"/</span><span style="color: rgb(0,128,0)">--&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">bean&nbsp;</span><span style="color: rgb(255,0,0)">id</span><span style="color: rgb(0,0,255)">="transactionManager"</span><span style="color: rgb(255,0,0)">&nbsp;class</span><span style="color: rgb(0,0,255)">="org.springframework.orm.hibernate3.HibernateTransactionManager"</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">property&nbsp;</span><span style="color: rgb(255,0,0)">name</span><span style="color: rgb(0,0,255)">="sessionFactory"</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">ref&nbsp;</span><span style="color: rgb(255,0,0)">local</span><span style="color: rgb(0,0,255)">="sessionFactory"</span><span style="color: rgb(255,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">/&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">property</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">bean</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,128,0)">&lt;!--</span><span style="color: rgb(0,128,0)">&nbsp;Hibernate&nbsp;Transaction&nbsp;Interceptor&nbsp;Definition&nbsp;</span><span style="color: rgb(0,128,0)">--&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">bean&nbsp;</span><span style="color: rgb(255,0,0)">id</span><span style="color: rgb(0,0,255)">="hibernateTransactionInterceptor"</span><span style="color: rgb(255,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;class</span><span style="color: rgb(0,0,255)">="org.springframework.transaction.interceptor.TransactionInterceptor"</span><span style="color: rgb(255,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parent</span><span style="color: rgb(0,0,255)">="transactionIntercetorTemplate"</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">property&nbsp;</span><span style="color: rgb(255,0,0)">name</span><span style="color: rgb(0,0,255)">="transactionManager"</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">bean&nbsp;</span><span style="color: rgb(255,0,0)">id</span><span style="color: rgb(0,0,255)">="hibernateTransactionManager"</span><span style="color: rgb(255,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;class</span><span style="color: rgb(0,0,255)">="org.springframework.orm.hibernate3.HibernateTransactionManager"</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">property&nbsp;</span><span style="color: rgb(255,0,0)">name</span><span style="color: rgb(0,0,255)">="sessionFactory"</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">ref&nbsp;</span><span style="color: rgb(255,0,0)">bean</span><span style="color: rgb(0,0,255)">="sessionFactory"</span><span style="color: rgb(255,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">/&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">property</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">bean</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">property</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">bean</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,128,0)">&lt;!--</span><span style="color: rgb(0,128,0)">&nbsp;Transction&nbsp;Intercetor's&nbsp;Template&nbsp;</span><span style="color: rgb(0,128,0)">--&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">bean&nbsp;</span><span style="color: rgb(255,0,0)">id</span><span style="color: rgb(0,0,255)">="transactionIntercetorTemplate"</span><span style="color: rgb(255,0,0)">&nbsp;abstract</span><span style="color: rgb(0,0,255)">="true"</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">property&nbsp;</span><span style="color: rgb(255,0,0)">name</span><span style="color: rgb(0,0,255)">="transactionAttributes"</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">props</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">prop&nbsp;</span><span style="color: rgb(255,0,0)">key</span><span style="color: rgb(0,0,255)">="get*"</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">PROPAGATION_REQUIRED,readOnly</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">prop</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">prop&nbsp;</span><span style="color: rgb(255,0,0)">key</span><span style="color: rgb(0,0,255)">="is*"</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">PROPAGATION_REQUIRED,readOnly</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">prop</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">prop&nbsp;</span><span style="color: rgb(255,0,0)">key</span><span style="color: rgb(0,0,255)">="check*"</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">PROPAGATION_REQUIRED,readOnly</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">prop</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">prop&nbsp;</span><span style="color: rgb(255,0,0)">key</span><span style="color: rgb(0,0,255)">="insert*"</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">PROPAGATION_REQUIRED</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">prop</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">prop&nbsp;</span><span style="color: rgb(255,0,0)">key</span><span style="color: rgb(0,0,255)">="update*"</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">PROPAGATION_REQUIRED</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">prop</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">prop&nbsp;</span><span style="color: rgb(255,0,0)">key</span><span style="color: rgb(0,0,255)">="delete*"</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">PROPAGATION_REQUIRED,-BussException</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">prop</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">prop&nbsp;</span><span style="color: rgb(255,0,0)">key</span><span style="color: rgb(0,0,255)">="*"</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">PROPAGATION_REQUIRED</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">prop</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">props</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">property</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">bean</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,128,0)">&lt;!--</span><span style="color: rgb(0,128,0)">&nbsp;定义自动代理生成器</span><span style="color: rgb(0,128,0)">--&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">bean&nbsp;</span><span style="color: rgb(255,0,0)">id</span><span style="color: rgb(0,0,255)">="autoProxyCreator"</span><span style="color: rgb(255,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;class</span><span style="color: rgb(0,0,255)">="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">property&nbsp;</span><span style="color: rgb(255,0,0)">name</span><span style="color: rgb(0,0,255)">="interceptorNames"</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">list</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">idref&nbsp;</span><span style="color: rgb(255,0,0)">bean</span><span style="color: rgb(0,0,255)">="hibernateTransactionInterceptor"</span><span style="color: rgb(255,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">/&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">idref&nbsp;</span><span style="color: rgb(255,0,0)">bean</span><span style="color: rgb(0,0,255)">="jdbcTransactionInterceptor"</span><span style="color: rgb(255,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">/&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">list</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">property</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">property&nbsp;</span><span style="color: rgb(255,0,0)">name</span><span style="color: rgb(0,0,255)">="beanNames"</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">value</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">*Service</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">value</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">&nbsp;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,128,0)">&lt;!--</span><span style="color: rgb(0,128,0)">list&gt;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;idref&nbsp;bean="bookService"&nbsp;/&gt;&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;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/list</span><span style="color: rgb(0,128,0)">--&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,128,0)">&lt;!--</span><span style="color: rgb(0,128,0)">添加Service&nbsp;bean</span><span style="color: rgb(0,128,0)">--&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">property</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">bean</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">bean&nbsp;</span><span style="color: rgb(255,0,0)">id</span><span style="color: rgb(0,0,255)">="hibernateDaoTemplate"</span><span style="color: rgb(255,0,0)">&nbsp;abstract</span><span style="color: rgb(0,0,255)">="true"</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">property&nbsp;</span><span style="color: rgb(255,0,0)">name</span><span style="color: rgb(0,0,255)">="sessionFactory"</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">ref&nbsp;</span><span style="color: rgb(255,0,0)">bean</span><span style="color: rgb(0,0,255)">="sessionFactory"</span><span style="color: rgb(255,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">/&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">property</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">bean</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,128,0)">&lt;!--</span><span style="color: rgb(0,128,0)">&nbsp;Dao&nbsp;定义&nbsp;</span><span style="color: rgb(0,128,0)">--&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">bean&nbsp;</span><span style="color: rgb(255,0,0)">id</span><span style="color: rgb(0,0,255)">="imageDao"</span><span style="color: rgb(255,0,0)">&nbsp;class</span><span style="color: rgb(0,0,255)">="com.fbyssssite.dao.ImageDao"</span><span style="color: rgb(255,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parent</span><span style="color: rgb(0,0,255)">="hibernateDaoTemplate"</span><span style="color: rgb(255,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">/&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">bean&nbsp;</span><span style="color: rgb(255,0,0)">id</span><span style="color: rgb(0,0,255)">="imageFolderDao"</span><span style="color: rgb(255,0,0)">&nbsp;class</span><span style="color: rgb(0,0,255)">="com.fbyssssite.dao.ImageFolderDao"</span><span style="color: rgb(255,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parent</span><span style="color: rgb(0,0,255)">="hibernateDaoTemplate"</span><span style="color: rgb(255,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">/&gt;</span><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,128,0)">&lt;!--</span><span style="color: rgb(0,128,0)">&nbsp;Service&nbsp;定义&nbsp;</span><span style="color: rgb(0,128,0)">--&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">bean&nbsp;</span><span style="color: rgb(255,0,0)">id</span><span style="color: rgb(0,0,255)">="imageService"</span><span style="color: rgb(255,0,0)">&nbsp;class</span><span style="color: rgb(0,0,255)">="com.fbyssssite.bo.ImageService"</span><span style="color: rgb(255,0,0)">&nbsp;autowire</span><span style="color: rgb(0,0,255)">="byName"</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">property&nbsp;</span><span style="color: rgb(255,0,0)">name</span><span style="color: rgb(0,0,255)">="dao"</span><span style="color: rgb(255,0,0)">&nbsp;ref</span><span style="color: rgb(0,0,255)">="imageDao"</span><span style="color: rgb(0,0,255)">&gt;&lt;/</span><span style="color: rgb(128,0,0)">property</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">bean</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">bean&nbsp;</span><span style="color: rgb(255,0,0)">id</span><span style="color: rgb(0,0,255)">="imageFolderService"</span><span style="color: rgb(255,0,0)">&nbsp;class</span><span style="color: rgb(0,0,255)">="com.fbyssssite.bo.ImageFolderService"</span><span style="color: rgb(255,0,0)">&nbsp;autowire</span><span style="color: rgb(0,0,255)">="byName"</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">property&nbsp;</span><span style="color: rgb(255,0,0)">name</span><span style="color: rgb(0,0,255)">="dao"</span><span style="color: rgb(255,0,0)">&nbsp;ref</span><span style="color: rgb(0,0,255)">="imageFolderDao"</span><span style="color: rgb(0,0,255)">&gt;&lt;/</span><span style="color: rgb(128,0,0)">property</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">bean</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;</span></span>
<p><strong>二、测试代码：</strong>&nbsp;&nbsp;<br />
</p>
<div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt; background: rgb(230,230,230) 0% 50%; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 95%; padding-top: 4px; border-bottom: windowtext 0.5pt solid; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">
<div><img id="_70_310_Open_Image" onclick="this.style.display='none'; document.getElementById('_70_310_Open_Text').style.display='none'; document.getElementById('_70_310_Closed_Image').style.display='inline'; document.getElementById('_70_310_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="_70_310_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_70_310_Closed_Text').style.display='none'; document.getElementById('_70_310_Open_Image').style.display='inline'; document.getElementById('_70_310_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="color: rgb(0,0,255)">public</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">void</span><span style="color: rgb(0,0,0)">&nbsp;delete(Object&nbsp;entity,IBaseUser&nbsp;user)&nbsp;</span><span style="color: rgb(0,0,255)">throws</span><span style="color: rgb(0,0,0)">&nbsp;BussException&nbsp;</span><span id="_70_310_Closed_Text" style="border-right: rgb(128,128,128) 1px solid; border-top: rgb(128,128,128) 1px solid; display: none; border-left: rgb(128,128,128) 1px solid; border-bottom: rgb(128,128,128) 1px solid; background-color: rgb(255,255,255)">...</span><span id="_70_310_Open_Text"><span style="color: rgb(0,0,0)">{<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">super</span><span style="color: rgb(0,0,0)">.delete(entity,&nbsp;user);<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;ImageFolder&nbsp;folder&nbsp;</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">&nbsp;(ImageFolder)entity;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;String&nbsp;folderId&nbsp;</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">&nbsp;folder.getId();&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;IImageService&nbsp;imageService&nbsp;&nbsp;</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">&nbsp;ServiceFactory.getImageService();<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;imageService.deleteAllInFolder(folderId,user);&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />&nbsp;&nbsp;}</span></span><span style="color: rgb(0,0,0)"><br />
<img id="_394_784_Open_Image" onclick="this.style.display='none'; document.getElementById('_394_784_Open_Text').style.display='none'; document.getElementById('_394_784_Closed_Image').style.display='inline'; document.getElementById('_394_784_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="_394_784_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_394_784_Closed_Text').style.display='none'; document.getElementById('_394_784_Open_Image').style.display='inline'; document.getElementById('_394_784_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" align="top" />&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">public</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">void</span><span style="color: rgb(0,0,0)">&nbsp;deleteAllInFolder(String&nbsp;id,IBaseUser&nbsp;sysUser)&nbsp;</span><span style="color: rgb(0,0,255)">throws</span><span style="color: rgb(0,0,0)">&nbsp;BussException&nbsp;</span><span id="_394_784_Closed_Text" style="border-right: rgb(128,128,128) 1px solid; border-top: rgb(128,128,128) 1px solid; display: none; border-left: rgb(128,128,128) 1px solid; border-bottom: rgb(128,128,128) 1px solid; background-color: rgb(255,255,255)">...</span><span id="_394_784_Open_Text"><span style="color: rgb(0,0,0)">{(来源:www.iocblog.net)<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;log.info(</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">删除图片夹'</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">+</span><span style="color: rgb(0,0,0)">id</span><span style="color: rgb(0,0,0)">+</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">'中的图片...</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">);<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">throw</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">new</span><span style="color: rgb(0,0,0)">&nbsp;BussException(</span><span style="color: rgb(0,0,0)">1</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">临时测试：测试事务是否生效的异常。测试完毕后删除此语句。</span><span style="color: rgb(0,0,0)">"</span><span style="color: rgb(0,0,0)">,log);<br />
<img id="_502_777_Open_Image" onclick="this.style.display='none'; document.getElementById('_502_777_Open_Text').style.display='none'; document.getElementById('_502_777_Closed_Image').style.display='inline'; document.getElementById('_502_777_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="_502_777_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_502_777_Closed_Text').style.display='none'; document.getElementById('_502_777_Open_Image').style.display='inline'; document.getElementById('_502_777_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;</span><span id="_502_777_Closed_Text" style="border-right: rgb(128,128,128) 1px solid; border-top: rgb(128,128,128) 1px solid; display: none; border-left: rgb(128,128,128) 1px solid; border-bottom: rgb(128,128,128) 1px solid; background-color: rgb(255,255,255)">/**/</span><span id="_502_777_Open_Text"><span style="color: rgb(0,128,0)">/*</span><span style="color: rgb(0,128,0)"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;StringBuffer&nbsp;sql&nbsp;=&nbsp;new&nbsp;StringBuffer("delete&nbsp;");<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;sql.append("from&nbsp;");<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;sql.append(getEntityClassName());<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;SqlBuilder&nbsp;sqlBuilder&nbsp;&nbsp;=&nbsp;SqlBuilder.getInstance();<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;sqlBuilder.appendWhereCondition(sql,&nbsp;"folderId='"+id+"'");<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;bulkUpdate(sql.toString(),&nbsp;sysUser);<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,128,0)">*/</span></span><span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />&nbsp;&nbsp;}</span></span></div>
</div>
<p><br />
<strong>三、测试效果：</strong><br />
抛出BussException之后，imageFolder实体并没有被删除，而是回滚了。<br />
<strong>四、注意事项：</strong><br />
<strong>1.</strong>其中的&nbsp;BussException是一个CheckedException(继承自Exception)，这里不过是一个例子，如果其他方法需要同样的方式处理事务，也要加上-BussException，否则不能回滚；如果是一个UnCheckedException，就不需要在这里配置，默认就会回滚。<br />
<strong>2.</strong>如果采用MySQL，show table status可以查看表的ENGINE类型，MyISAM是不支持事务的，如果需要事务，应该改成InnoDB:alter table [tablename] engine = InnoDB;</p>
<img src ="http://www.blogjava.net/liuzheng/aggbug/197097.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuzheng/" target="_blank">刘铮 </a> 2008-04-29 11:58 <a href="http://www.blogjava.net/liuzheng/articles/197097.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring 事务的处理（转）</title><link>http://www.blogjava.net/liuzheng/articles/192163.html</link><dc:creator>刘铮 </dc:creator><author>刘铮 </author><pubDate>Fri, 11 Apr 2008 05:24:00 GMT</pubDate><guid>http://www.blogjava.net/liuzheng/articles/192163.html</guid><wfw:comment>http://www.blogjava.net/liuzheng/comments/192163.html</wfw:comment><comments>http://www.blogjava.net/liuzheng/articles/192163.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liuzheng/comments/commentRss/192163.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liuzheng/services/trackbacks/192163.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 本章是第四章的延续，作者向读者展示了如何使用Spring事务管理来保证数据一致性。Spring对事务的管理有丰富的支持，程序控制的和声明式的都有。在本章中，我们会学习到如何把应用程序的代码放置在事务中，以确保在一切顺利时，所有的成果都被固定下来；一旦其中有一步出错，那么整个事情就像没有发生一样。&nbsp;一、理解事务首先我们应该弄清楚什么是事务，这样才能认识到事务的重要性。举一个小小...&nbsp;&nbsp;<a href='http://www.blogjava.net/liuzheng/articles/192163.html'>阅读全文</a><img src ="http://www.blogjava.net/liuzheng/aggbug/192163.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuzheng/" target="_blank">刘铮 </a> 2008-04-11 13:24 <a href="http://www.blogjava.net/liuzheng/articles/192163.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring--简单使用quartz实现定时作业 （转）</title><link>http://www.blogjava.net/liuzheng/articles/179946.html</link><dc:creator>刘铮 </dc:creator><author>刘铮 </author><pubDate>Thu, 14 Feb 2008 08:11:00 GMT</pubDate><guid>http://www.blogjava.net/liuzheng/articles/179946.html</guid><wfw:comment>http://www.blogjava.net/liuzheng/comments/179946.html</wfw:comment><comments>http://www.blogjava.net/liuzheng/articles/179946.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liuzheng/comments/commentRss/179946.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liuzheng/services/trackbacks/179946.html</trackback:ping><description><![CDATA[&nbsp;定时批处理作业是J2EE企业应用里很重要的一环，用来在晚间进行财务挂账，数据转存，新闻联播等等操作。
<p>&nbsp;&nbsp;&nbsp; 而在Spring里，已经很好的集成了Quartz，简单到像配cron一样，在xml文件里面配一下时间就可以自动执行，不需要写一行代码。Spring对Quartz大刀阔斧的简化堪称范例，Quartz项目组也许可以学习一下。</p>
<pre>&nbsp;&nbsp;&nbsp; &lt;bean id="methodInvokingJobDetail"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="targetObject"&gt;&lt;ref bean="financeDAO"/&gt;&lt;/property&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="targetMethod"&gt;&lt;value&gt;confirmOrder&lt;/value&gt;&lt;/property&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/bean&gt;</pre>
<pre><br />
&nbsp;&nbsp;&nbsp; &lt;bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="jobDetail"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ref bean="methodInvokingJobDetail"/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/property&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="cronExpression"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;0 0 6,12,20 * * ?&lt;/value&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/property&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/bean&gt;</pre>
<pre>&nbsp;&nbsp;&nbsp; &lt;bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="triggers"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;list&gt;&lt;ref local="cronTrigger"/&gt;&lt;/list&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/property&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/bean&gt;</pre>
<p>上面这段配置文件规定了在早上6点和晚上8点执行financeDAO对象的confirmOrder()方法.<br />
</p>
<p><br />
附：cronExpression配置说明</p>
<p>
<table cellspacing="8">
    <tbody>
        <tr>
            <th align="left">字段</th>
            <th align="left">&nbsp;</th>
            <th align="left">允许值</th>
            <th align="left">&nbsp;</th>
            <th align="left">允许的特殊字符</th>
        </tr>
        <tr>
            <td align="left"><code>秒</code></td>
            <td align="left">&nbsp; </td>
            <td align="left"><code>0-59</code></td>
            <td align="left">&nbsp; </td>
            <td align="left"><code>, - * /</code></td>
        </tr>
        <tr>
            <td align="left"><code>分</code></td>
            <td align="left">&nbsp; </td>
            <td align="left"><code>0-59</code></td>
            <td align="left">&nbsp; </td>
            <td align="left"><code>, - * /</code></td>
        </tr>
        <tr>
            <td align="left"><code>小时</code></td>
            <td align="left">&nbsp; </td>
            <td align="left"><code>0-23</code></td>
            <td align="left">&nbsp; </td>
            <td align="left"><code>, - * /</code></td>
        </tr>
        <tr>
            <td align="left"><code>日期</code></td>
            <td align="left">&nbsp; </td>
            <td align="left"><code>1-31</code></td>
            <td align="left">&nbsp; </td>
            <td align="left"><code>, - * ? / L W C</code></td>
        </tr>
        <tr>
            <td align="left"><code>月份</code></td>
            <td align="left">&nbsp; </td>
            <td align="left"><code>1-12&nbsp;或者 JAN-DEC</code></td>
            <td align="left">&nbsp; </td>
            <td align="left"><code>, - * /</code></td>
        </tr>
        <tr>
            <td align="left"><code>星期</code></td>
            <td align="left">&nbsp; </td>
            <td align="left"><code>1-7&nbsp;或者 SUN-SAT</code></td>
            <td align="left">&nbsp; </td>
            <td align="left"><code>, - * ? / L C #</code></td>
        </tr>
        <tr>
            <td align="left"><code>年（可选）</code></td>
            <td align="left">&nbsp; </td>
            <td align="left"><code>留空, 1970-2099</code></td>
            <td align="left">&nbsp; </td>
            <td align="left"><code>, - * /</code></td>
        </tr>
    </tbody>
</table>
</p>
<img src ="http://www.blogjava.net/liuzheng/aggbug/179946.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuzheng/" target="_blank">刘铮 </a> 2008-02-14 16:11 <a href="http://www.blogjava.net/liuzheng/articles/179946.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>spring2.0中新标签的使用（转）</title><link>http://www.blogjava.net/liuzheng/articles/179945.html</link><dc:creator>刘铮 </dc:creator><author>刘铮 </author><pubDate>Thu, 14 Feb 2008 08:09:00 GMT</pubDate><guid>http://www.blogjava.net/liuzheng/articles/179945.html</guid><wfw:comment>http://www.blogjava.net/liuzheng/comments/179945.html</wfw:comment><comments>http://www.blogjava.net/liuzheng/articles/179945.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liuzheng/comments/commentRss/179945.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liuzheng/services/trackbacks/179945.html</trackback:ping><description><![CDATA[1,&lt;util:constant/&gt;<br />
取代了之前通过FieldRetrevingFactoryBean获取bean静态常量的FactoryBean！<br />
<br />
<br />
老的用法<br />
[code]&lt;bean id="..." class="..."&gt;<br />
&nbsp; &lt;property name="isolation"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;bean id="java.sql.Connection.TRANSACTION_SERIALIZABLE"<br />
&nbsp;&nbsp;&nbsp; class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean" /&gt;<br />
&nbsp; &lt;/property&gt;<br />
&lt;/bean&gt;[/code]<br />
<br />
新用法<br />
[code]&lt;bean id="..." class="..."&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;property name="isolation"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;util:constant static-field="java.sql.Connection.TRANSACTION_SERIALIZABLE"/&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/property&gt;<br />
&lt;/bean&gt;[/code]<br />
<br />
2,&lt;util:property-path/&gt;<br />
取代了之前通过PropertyPathFactoryBean来指定属性路径获取属性值的FactoryBean！<br />
<br />
老的用法<br />
[code]<br />
&lt;bean id="testBean" class="org.springframework.beans.TestBean" singleton="false"&gt;<br />
&nbsp; &lt;property name="age" value="10"/&gt;<br />
&nbsp; &lt;property name="spouse"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;bean class="org.springframework.beans.TestBean"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="age" value="11"/&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/bean&gt;<br />
&nbsp; &lt;/property&gt;<br />
&lt;/bean&gt;<br />
<br />
&lt;bean id="testBean.age" class="org.springframework.beans.factory.config.PropertyPathFactoryBean"/&gt;[/code]<br />
<br />
<br />
新的用法<br />
[code]<br />
&lt;bean id="testBean" class="org.springframework.beans.TestBean" singleton="false"&gt;<br />
&nbsp; &lt;property name="age" value="10"/&gt;<br />
&nbsp; &lt;property name="spouse"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;bean class="org.springframework.beans.TestBean"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="age" value="11"/&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/bean&gt;<br />
&nbsp; &lt;/property&gt;<br />
&lt;/bean&gt;<br />
<br />
&lt;util:property-path id="name" path="testBean.age"/&gt;<br />
[/code]<br />
<br />
<br />
3,&lt;util:properties/&gt;<br />
替代了之前通过PropertiesFactoryBean来获取properties配制文件数据的FactoryBean!<br />
<br />
<br />
老用法<br />
[code]&lt;bean id="jdbcConfiguration" class="org.springframework.beans.factory.config.PropertiesFactoryBean"&gt;<br />
&nbsp; &lt;property name="location" value="classpath:com/foo/jdbc-production.properties"/&gt;<br />
&lt;/bean&gt;[/code]<br />
<br />
<br />
新用法<br />
[code]&lt;util:properties id="jdbcConfiguration" location="classpath:com/foo/jdbc-production.properties"/&gt;[/code]<br />
<br />
4,&lt;util:list/&gt;<br />
替代了之前通过&lt;list&gt;&lt;value&gt;&lt;/value&gt;&lt;/list&gt;的内置配制方式，让多个bean调用同一list成为可能！<br />
<br />
老的用法<br />
[code]&lt;bean id="emails" class="org.springframework.beans.factory.config.ListFactoryBean"&gt;<br />
&nbsp; &lt;property name="sourceList"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;list&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;pechorin@hero.org&lt;/value&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;raskolnikov@slums.org&lt;/value&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;stavrogin@gov.org&lt;/value&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;porfiry@gov.org&lt;/value&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/list&gt;<br />
&nbsp; &lt;/property&gt;<br />
&lt;/bean&gt;[/code]<br />
<br />
新的用法<br />
[code]&lt;util:list id="emails" list-class="java.util.LinkedList"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;value&gt;pechorin@hero.org&lt;/value&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;value&gt;raskolnikov@slums.org&lt;/value&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;value&gt;stavrogin@gov.org&lt;/value&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;value&gt;porfiry@gov.org&lt;/value&gt;<br />
&lt;/util:list&gt;[/code]<br />
<br />
5,&lt;util:map/&gt;<br />
替代了之前适用&lt;map&gt;&lt;entry key=""&gt;&lt;value&gt;&lt;/value&gt;&lt;/entry&gt;&lt;/map&gt;的配置方式，让多个bean调用同一map成为可能！<br />
<br />
老的用法<br />
[code]&lt;bean id="emails" class="org.springframework.beans.factory.config.MapFactoryBean"&gt;<br />
&nbsp; &lt;property name="sourceMap"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;map&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;entry key="pechorin" value="pechorin@hero.org"/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;entry key="raskolnikov" value="raskolnikov@slums.org"/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;entry key="stavrogin" value="stavrogin@gov.org"/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;entry key="porfiry" value="porfiry@gov.org"/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/list&gt;<br />
&nbsp; &lt;/property&gt;<br />
&lt;/bean&gt;[/code]<br />
<br />
新的用法<br />
[code]&lt;util:map id="emails" map-class="java.util.TreeMap"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;entry key="pechorin" value="pechorin@hero.org"/&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;entry key="raskolnikov" value="raskolnikov@slums.org"/&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;entry key="stavrogin" value="stavrogin@gov.org"/&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;entry key="porfiry" value="porfiry@gov.org"/&gt;<br />
&lt;/util:map&gt;[/code]<br />
<br />
<br />
6,&lt;util:set/&gt;<br />
替代了之前适用&lt;set&gt;&lt;value&gt;&lt;/value&gt;&lt;/set&gt;的配置方式，<br />
让多个bean调用同一set成为可能！<br />
<br />
老的用法<br />
[code]&lt;bean id="emails" class="org.springframework.beans.factory.config.SetFactoryBean"&gt;<br />
&nbsp; &lt;property name="sourceSet"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;set&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;pechorin@hero.org&lt;/value&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;raskolnikov@slums.org&lt;/value&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;stavrogin@gov.org&lt;/value&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;porfiry@gov.org&lt;/value&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/set&gt;<br />
&nbsp; &lt;/property&gt;<br />
&lt;/bean&gt;[/code]<br />
<br />
<br />
新的用法<br />
[code]&lt;util:set id="emails" set-class="java.util.TreeSet"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;value&gt;pechorin@hero.org&lt;/value&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;value&gt;raskolnikov@slums.org&lt;/value&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;value&gt;stavrogin@gov.org&lt;/value&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;value&gt;porfiry@gov.org&lt;/value&gt;<br />
&lt;/util:set&gt;[/code]<br />
<br />
7,&lt;jee:jndi-lookup/&gt;<br />
替代了之前使用JndiObjectFactoryBean指定配制获取容器JNDI资源的FactoryBean!<br />
<br />
老的用法<br />
[code]&lt;bean id="simple" class="org.springframework.jndi.JndiObjectFactoryBean"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;property name="jndiName" value="jdbc/MyDataSource"/&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;property name="cache" value="true"/&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;property name="resourceRef" value="true"/&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;property name="lookupOnStartup" value="false"/&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;property name="expectedType" value="com.myapp.DefaultFoo"/&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;property name="proxyInterface" value="com.myapp.Foo"/&gt;<br />
&lt;/bean&gt;<br />
[/code]<br />
<br />
新用法<br />
[code]&lt;jee:jndi-lookup id="simple"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jndi-name="jdbc/MyDataSource"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cache="true"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; resource-ref="true"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lookup-on-startup="false"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; expected-type="com.myapp.DefaultFoo"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proxy-interface="com.myapp.Foo"/&gt;[/code]<br />
<br />
8,&lt;jee:local-slsb/&gt;<br />
替代了之前使用LocalStatelessSessionProxyFactoryBean来获取无状态会话BEAN的FactoryBean!<br />
<br />
老的用法<br />
[code]&lt;bean id="complexRemoteEjb"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; class="org.springframework.ejb.access.LocalStatelessSessionProxyFactoryBean"&gt;<br />
&nbsp; &lt;property name="jndiName" value="ejb/MyRemoteBean"/&gt;<br />
&nbsp; &lt;property name="businessInterface" value="com.foo.service.RentalService"/&gt;<br />
&nbsp; &lt;property name="cacheHome" value="true"/&gt;<br />
&nbsp; &lt;property name="lookupHomeOnStartup" value="true"/&gt;<br />
&nbsp; &lt;property name="resourceRef" value="true"/&gt;<br />
&nbsp; &lt;property name="homeInterface" value="com.foo.service.RentalService"/&gt;<br />
&nbsp; &lt;property name="refreshHomeOnConnectFailure" value="true"/&gt;<br />
&lt;/bean&gt;[/code]<br />
<br />
新的用法<br />
[code]&lt;jee:remote-slsb id="complexRemoteEjb"<br />
&nbsp;&nbsp;&nbsp; jndi-name="ejb/MyRemoteBean"<br />
&nbsp;&nbsp;&nbsp; business-interface="com.foo.service.RentalService"<br />
&nbsp;&nbsp;&nbsp; cache-home="true"<br />
&nbsp;&nbsp;&nbsp; lookup-home-on-startup="true"<br />
&nbsp;&nbsp;&nbsp; resource-ref="true"<br />
&nbsp;&nbsp;&nbsp; home-interface="com.foo.service.RentalService"<br />
&nbsp;&nbsp;&nbsp; refresh-home-on-connect-failure="true"&gt;[/code]<br />
<br />
&nbsp;
<img src ="http://www.blogjava.net/liuzheng/aggbug/179945.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuzheng/" target="_blank">刘铮 </a> 2008-02-14 16:09 <a href="http://www.blogjava.net/liuzheng/articles/179945.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>spring webservice 对部署webservice的WSDL 的详解</title><link>http://www.blogjava.net/liuzheng/articles/172536.html</link><dc:creator>刘铮 </dc:creator><author>刘铮 </author><pubDate>Thu, 03 Jan 2008 09:55:00 GMT</pubDate><guid>http://www.blogjava.net/liuzheng/articles/172536.html</guid><wfw:comment>http://www.blogjava.net/liuzheng/comments/172536.html</wfw:comment><comments>http://www.blogjava.net/liuzheng/articles/172536.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liuzheng/comments/commentRss/172536.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liuzheng/services/trackbacks/172536.html</trackback:ping><description><![CDATA[spring webservice 可以自动生成WSDL文件,&nbsp;<br />
&lt;bean id="<span style="color: red">Hr</span>"<br />
&nbsp;&nbsp;class="org.springframework.ws.wsdl.wsdl11.DynamicWsdl11Definition"&gt;<br />
&nbsp;&nbsp;&lt;description&gt;<br />
&nbsp;&nbsp;&nbsp;This bean definition represents a WSDL definition that is<br />
&nbsp;&nbsp;&nbsp;generated at runtime, based on the builder defined below. It<br />
&nbsp;&nbsp;&nbsp;can be retrieved by going to /<span style="color: #00ccff">Hr</span>/<span style="color: red">Hr</span>.wsdl (i.e. the bean<br />
&nbsp;&nbsp;&nbsp;name corresponds to the filename).<br />
&nbsp;&nbsp;&lt;/description&gt;<br />
&nbsp;&nbsp;&lt;property name="builder"&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;description&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;The builder creates a WSDL from the 'echo.xsd' schema.<br />
&nbsp;&nbsp;&nbsp;&nbsp;It detects all elements that ends with 'Request', finds<br />
&nbsp;&nbsp;&nbsp;&nbsp;corresponding 'Response' messages, and creates an<br />
&nbsp;&nbsp;&nbsp;&nbsp;operation based on that. All operations are put in a<br />
&nbsp;&nbsp;&nbsp;&nbsp;portType with name 'Echo', and binding and service are<br />
&nbsp;&nbsp;&nbsp;&nbsp;created.<br />
&nbsp;&nbsp;&nbsp;&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;bean<br />
&nbsp;&nbsp;&nbsp;&nbsp;class="org.springframework.ws.wsdl.wsdl11.builder.XsdBasedSoap11Wsdl4jDefinitionBuilder"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;property name="schema" value="/WEB-INF/person.xsd" /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;property name="portTypeName" value="<span style="color: #339966">Info</span>" /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;property name="locationUri"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value="http://localhost:8080/<span style="color: #00ccff">Hr</span>/webservices" /&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;/bean&gt;<br />
&nbsp;&nbsp;&lt;/property&gt;<br />
&nbsp;&lt;/bean&gt;<br />
<br />
<br />
蓝色表示eclipse中创建的根目录也就是web的根目录，只能为web的根目录<br />
红色表示在根目录下的子目录中可以访问到生成的WSDL文件的路径，可以随便取<br />
绿色表示portType名字，可以随便取
<img src ="http://www.blogjava.net/liuzheng/aggbug/172536.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuzheng/" target="_blank">刘铮 </a> 2008-01-03 17:55 <a href="http://www.blogjava.net/liuzheng/articles/172536.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>spring的参数的注入</title><link>http://www.blogjava.net/liuzheng/articles/170325.html</link><dc:creator>刘铮 </dc:creator><author>刘铮 </author><pubDate>Tue, 25 Dec 2007 07:19:00 GMT</pubDate><guid>http://www.blogjava.net/liuzheng/articles/170325.html</guid><wfw:comment>http://www.blogjava.net/liuzheng/comments/170325.html</wfw:comment><comments>http://www.blogjava.net/liuzheng/articles/170325.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liuzheng/comments/commentRss/170325.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liuzheng/services/trackbacks/170325.html</trackback:ping><description><![CDATA[<code class="literal">&lt;value/&gt;</code>元素通过字符串来指定属性或构造器参数的值。JavaBean <code class="literal">PropertyEditor</code>将用于把字符串从<code class="classname">java.lang.String</code>类型转化为实际的属性或参数类型。<br />
所以可以放心的使用&lt;value/&gt;注入int等非String类型
<img src ="http://www.blogjava.net/liuzheng/aggbug/170325.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuzheng/" target="_blank">刘铮 </a> 2007-12-25 15:19 <a href="http://www.blogjava.net/liuzheng/articles/170325.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>有关spring中的factorybean的深刻理解</title><link>http://www.blogjava.net/liuzheng/articles/170318.html</link><dc:creator>刘铮 </dc:creator><author>刘铮 </author><pubDate>Tue, 25 Dec 2007 07:01:00 GMT</pubDate><guid>http://www.blogjava.net/liuzheng/articles/170318.html</guid><wfw:comment>http://www.blogjava.net/liuzheng/comments/170318.html</wfw:comment><comments>http://www.blogjava.net/liuzheng/articles/170318.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liuzheng/comments/commentRss/170318.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liuzheng/services/trackbacks/170318.html</trackback:ping><description><![CDATA[<p>Interface to be implemented by objects used within a BeanFactory that are themselves factories. If a bean implements this interface, it is used as a factory, not directly as a bean.
<p><strong>NB: A bean that implements this interface cannot be used as a normal bean.</strong> A FactoryBean is defined in a bean style, but the object exposed for bean references is always the object that it creates.
<p>FactoryBeans can support singletons and prototypes, and can either create objects lazily on demand or eagerly on startup.
<p>This interface is heavily used within the framework, for example for the AOP ProxyFactoryBean or JndiObjectFactoryBean. It can be used for application components, but this is not common outside of infrastructure code.</p>
<br />
可以自己创建FactoryBean，这个时候的类就要当做工厂类来使用。在spring的配置文件中&lt;ref local="factoryBean"/&gt;调用的是getObject()方法，返回是object对象。<br />
<br />
<br />
<img src ="http://www.blogjava.net/liuzheng/aggbug/170318.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuzheng/" target="_blank">刘铮 </a> 2007-12-25 15:01 <a href="http://www.blogjava.net/liuzheng/articles/170318.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring中的重要方法：BeanPostProcessor</title><link>http://www.blogjava.net/liuzheng/articles/144251.html</link><dc:creator>刘铮 </dc:creator><author>刘铮 </author><pubDate>Tue, 11 Sep 2007 06:05:00 GMT</pubDate><guid>http://www.blogjava.net/liuzheng/articles/144251.html</guid><wfw:comment>http://www.blogjava.net/liuzheng/comments/144251.html</wfw:comment><comments>http://www.blogjava.net/liuzheng/articles/144251.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liuzheng/comments/commentRss/144251.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liuzheng/services/trackbacks/144251.html</trackback:ping><description><![CDATA[Spring中提供了一种可以在bean的生命周期内改变bean的属性的方法<br />
<br />
实现BeanPostProcessor接口就可以在bean被创造和被织入的时候改变它的属性<br />
<br />
<br />
DefaultAdvisorAutoProxyCreator自动代理正是利用此接口完成自动代理的，当所有的bean定义好了后，所有的advisor便会利用BeanPostProcessor加载到对应的切入点的类中
<img src ="http://www.blogjava.net/liuzheng/aggbug/144251.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuzheng/" target="_blank">刘铮 </a> 2007-09-11 14:05 <a href="http://www.blogjava.net/liuzheng/articles/144251.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring 中的事务管理学习心得</title><link>http://www.blogjava.net/liuzheng/articles/144052.html</link><dc:creator>刘铮 </dc:creator><author>刘铮 </author><pubDate>Mon, 10 Sep 2007 09:18:00 GMT</pubDate><guid>http://www.blogjava.net/liuzheng/articles/144052.html</guid><wfw:comment>http://www.blogjava.net/liuzheng/comments/144052.html</wfw:comment><comments>http://www.blogjava.net/liuzheng/articles/144052.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liuzheng/comments/commentRss/144052.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liuzheng/services/trackbacks/144052.html</trackback:ping><description><![CDATA[<p dir="ltr">Spring 中的事务管理学习心得<br />
<br />
<br />
可以使用&lt;bean id="autoproxy"class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"&gt;<br />
&nbsp;&nbsp;&nbsp;&#8230;<br />
&lt;/bean&gt;<br />
<br />
进行自动代理，但是这里要注意的是自动代理针对的是advisor，advisor是由advice和pointcut（interceptor也是advice的一种）所组成的，所以单独的interceptor不能使用，也就是说TransactionInterceptor不能使用。<br />
所以应该建立advisor，在事务管理中也就是TransactionAttributeSourceAdvisor。<br />
<br />
TransactionAttributeSourceAdvisor中需要配置TransactionInterceptor。<br />
配置示例如下：<br />
&lt;bean id="transactionAdvisor"<br />
class="org.springframework.transaction.interceptor.<br />
TransactionAttributeSourceAdvisor"&gt;<br />
&lt;property name="transactionInterceptor"&gt;<br />
&lt;ref bean="transactionInterceptor"/&gt;<br />
&lt;/property&gt;<br />
&lt;/bean&gt;<br />
<br />
TransactionInterceptor的配置如下：<br />
&lt;bean id="transactionInterceptor"<br />
class="org.springframework.transaction.interceptor.<br />
TransactionInterceptor"&gt;<br />
&lt;property name="transactionManager"&gt;<br />
&lt;ref bean="transactionManager"/&gt;<br />
&lt;/property&gt;<br />
&lt;property name="transactionAttributeSource"&gt;<br />
&lt;ref bean="transactionAttributeSource"/&gt;<br />
&lt;/property&gt;<br />
&lt;/bean&gt;<br />
<br />
其中transactionManager的配置根据所使用的存储方法不同而不同：<br />
<br />
使用jdbc的配置如下：<br />
&lt;bean id="transactionManager" class="org.springframework.jdbc.<br />
datasource.DataSourceTransactionManager"&gt;<br />
&lt;property name="dataSource"&gt;<br />
&lt;ref bean="dataSource"/&gt;<br />
&lt;/property&gt;<br />
&lt;/bean&gt;</p>
<p dir="ltr" style="margin-right: 0px">&nbsp;使用hibernate的配置如下：<br />
&lt;bean id="transactionManager" class="org.springframework.<br />
orm.hibernate.HibernateTransactionManager"&gt;<br />
&lt;property name="sessionFactory"&gt;<br />
&lt;ref bean="sessionFactory"/&gt;<br />
&lt;/property&gt;<br />
&lt;/bean&gt;</p>
而transactionAttributeSource是一个接口，一般使用NameMatchTransactionAttributeSource实现此接口<br />
&lt;bean id="transactionAttributeSource"<br />
class="org.springframework.transaction.interceptor.<br />
NameMatchTransactionAttributeSource"&gt;<br />
&lt;property name="properties"&gt;<br />
&lt;props&gt;<br />
&lt;prop key="get*"&gt;PROPAGATION_SUPPORTS&lt;/prop&gt;<br />
&lt;/props&gt;<br />
&lt;/property&gt;<br />
&lt;/bean&gt;<br />
注意其中的properties属性是一个name/attribute 的map其中name是针对需要进行的事务管理的方法attribute是事务管理的属性由TransactionAttribute决定<br />
而TransactionAttribute扩展的事务定义基本类TransactionDefinition，在这个基本类上面加上了boolean rollbackOn(Throwable&nbsp;ex)方法<br />
所以&lt;prop key="get*"&gt;PROPAGATION_SUPPORTS&lt;/prop&gt;的attribute还可以添加：<br />
如&lt;prop key="get*"&gt;PROPAGATION_SUPPORTS，<code>ISOLATION_SERIALIZABLE</code> ，readonly&lt;/prop&gt;<br />
<br />
<br />
<br />
以上是从宏观到微观的分析，<br />
以下是从微观到宏观的分析：<br />
<br />
1。设置事务管理属性<br />
&lt;bean id="transactionAttributeSource"<br />
class="org.springframework.transaction.interceptor.<br />
NameMatchTransactionAttributeSource"&gt;<br />
&lt;property name="properties"&gt;<br />
&lt;props&gt;<br />
&lt;prop key="get*v&gt;PROPAGATION_SUPPORTS&lt;/prop&gt;<br />
&lt;/props&gt;<br />
&lt;/property&gt;<br />
&lt;/bean&gt;&nbsp;&nbsp;<br />
2。设置事务管理器，根据所使用的存储方法不同而不同：以hibernate为例<br />
<br />
&lt;bean id="transactionManager" class="org.springframework.<br />
orm.hibernate.HibernateTransactionManager"&gt;<br />
&lt;property name="sessionFactory"&gt;<br />
&lt;ref bean="sessionFactory"/&gt;<br />
&lt;/property&gt;<br />
&lt;/bean&gt;<br />
<br />
3。设置interceptor<br />
&lt;bean id="transactionInterceptor"<br />
class="org.springframework.transaction.interceptor.<br />
TransactionInterceptor"&gt;<br />
&lt;property name="transactionManager"&gt;<br />
&lt;ref bean="transactionManager"/&gt;<br />
&lt;/property&gt;<br />
&lt;property name="transactionAttributeSource"&gt;<br />
&lt;ref bean="transactionAttributeSource"/&gt;<br />
&lt;/property&gt;<br />
&lt;/bean&gt;<br />
<br />
4。最后设置advisor：<br />
&lt;bean id="transactionAdvisor"<br />
class="org.springframework.transaction.interceptor.<br />
TransactionAttributeSourceAdvisor"&gt;<br />
&lt;property name="transactionInterceptor"&gt;<br />
&lt;ref bean="transactionInterceptor"/&gt;<br />
&lt;/property&gt;<br />
&lt;/bean&gt;<br />
所以就可以通过自动代理进行代理了，<br />
注意这里的advisor还是有pointcut的，pointcut在事务管理中设置了，例如：<br />
&lt;props&gt;<br />
&lt;prop key="get*"&gt;PROPAGATION_SUPPORTS&lt;/prop&gt;<br />
&lt;/props&gt;<br />
还有由于Spring本身的框架的原因，如果在Log4j中的调试级别为debug的话，那么设置advisor时就不能使用property方法，而要使用constructor-arg方法<br />
<br />
<br />
<br />
<br />
<br />
使用MethodMapTransactionAttributeSource可以对特定的类的方法进行事务管理<br />
设置property------setMethodMap<br />
Set a name/attribute map, consisting of "FQCN.method" method names (e.g. "com.mycompany.mycode.MyClass.myMethod") and <a title="interface in org.springframework.transaction.interceptor" href="mk:@MSITStore:E:\学习内容\java相关官方文档\Spring_2.0.CHM::/org/springframework/transaction/interceptor/TransactionAttribute.html"><code>TransactionAttribute</code></a> instances (or Strings to be converted to <code>TransactionAttribute</code> instances). 
<img src ="http://www.blogjava.net/liuzheng/aggbug/144052.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuzheng/" target="_blank">刘铮 </a> 2007-09-10 17:18 <a href="http://www.blogjava.net/liuzheng/articles/144052.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring 中配置数据源</title><link>http://www.blogjava.net/liuzheng/articles/143746.html</link><dc:creator>刘铮 </dc:creator><author>刘铮 </author><pubDate>Sun, 09 Sep 2007 03:54:00 GMT</pubDate><guid>http://www.blogjava.net/liuzheng/articles/143746.html</guid><wfw:comment>http://www.blogjava.net/liuzheng/comments/143746.html</wfw:comment><comments>http://www.blogjava.net/liuzheng/articles/143746.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liuzheng/comments/commentRss/143746.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liuzheng/services/trackbacks/143746.html</trackback:ping><description><![CDATA[&lt;bean id="jndiDataSource"<br />
&nbsp;&nbsp;class="org.springframework.jndi.JndiObjectFactoryBean"<br />
&nbsp;&nbsp;abstract="false" singleton="true" lazy-init="default"<br />
&nbsp;&nbsp;autowire="default" dependency-check="default"&gt;<br />
&nbsp;&nbsp;&lt;property name="jndiName"&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;value&gt;java:comp/env/XXXX&lt;/value&gt;<br />
&nbsp;&nbsp;&lt;/property&gt;<br />
&nbsp;&lt;/bean&gt;
<img src ="http://www.blogjava.net/liuzheng/aggbug/143746.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuzheng/" target="_blank">刘铮 </a> 2007-09-09 11:54 <a href="http://www.blogjava.net/liuzheng/articles/143746.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring 中的特殊advice-intruduction advice</title><link>http://www.blogjava.net/liuzheng/articles/143317.html</link><dc:creator>刘铮 </dc:creator><author>刘铮 </author><pubDate>Fri, 07 Sep 2007 01:46:00 GMT</pubDate><guid>http://www.blogjava.net/liuzheng/articles/143317.html</guid><wfw:comment>http://www.blogjava.net/liuzheng/comments/143317.html</wfw:comment><comments>http://www.blogjava.net/liuzheng/articles/143317.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liuzheng/comments/commentRss/143317.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liuzheng/services/trackbacks/143317.html</trackback:ping><description><![CDATA[<ol>
    <li>intruduction advice这里没有<tt class="interfacename">MethodMatcher</tt>接口,因此也就没有 <tt class="interfacename">Pointcut</tt>接口与引入通知相关联。这里只进行类过滤。
    <li>与DefaultPointcutAdvisor不同，由于DefaultPointcutAdvisor有Pointcut，可以在class一级和method一级上进行控制。
    <li>一般使用DelegatingIntroductionInterceptor 作为拦截器，需要编写拦截的类必须继承DelegatingIntroductionInterceptor&nbsp; ,在这个继承了DelegatingIntroductionInterceptor 的类中不再使用MethodInvocation的process()方法，使用super.invoke(methodinvocation),这样做的原因是父类DelegatingIntroductionInterceptor 能够决定什么class负责处理方法的调用
    <li>advisor一般使用继承了DefaultIntroductionAdvisor 的类，创建的简单方法就是利用<code><strong>DefaultIntroductionAdvisor</strong>(DynamicIntroductionAdvice&nbsp;advice, Class&nbsp;clazz)这个构造函数。</code>
    <li>在appplicationcontext-config.xml中就只需要加入&lt;bean id="" class=""&gt;&lt;/bean&gt;就可以了，不需要进行其它配置 </li>
</ol>
<p>&nbsp;</p>
<img src ="http://www.blogjava.net/liuzheng/aggbug/143317.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuzheng/" target="_blank">刘铮 </a> 2007-09-07 09:46 <a href="http://www.blogjava.net/liuzheng/articles/143317.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring api参考</title><link>http://www.blogjava.net/liuzheng/articles/143312.html</link><dc:creator>刘铮 </dc:creator><author>刘铮 </author><pubDate>Fri, 07 Sep 2007 01:22:00 GMT</pubDate><guid>http://www.blogjava.net/liuzheng/articles/143312.html</guid><wfw:comment>http://www.blogjava.net/liuzheng/comments/143312.html</wfw:comment><comments>http://www.blogjava.net/liuzheng/articles/143312.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/liuzheng/comments/commentRss/143312.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liuzheng/services/trackbacks/143312.html</trackback:ping><description><![CDATA[<a href="http://www.redsaga.com/spring_ref/2.0/html/">http://www.redsaga.com/spring_ref/2.0/html/</a>
<img src ="http://www.blogjava.net/liuzheng/aggbug/143312.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuzheng/" target="_blank">刘铮 </a> 2007-09-07 09:22 <a href="http://www.blogjava.net/liuzheng/articles/143312.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring AOP APIs</title><link>http://www.blogjava.net/liuzheng/articles/143311.html</link><dc:creator>刘铮 </dc:creator><author>刘铮 </author><pubDate>Fri, 07 Sep 2007 01:19:00 GMT</pubDate><guid>http://www.blogjava.net/liuzheng/articles/143311.html</guid><wfw:comment>http://www.blogjava.net/liuzheng/comments/143311.html</wfw:comment><comments>http://www.blogjava.net/liuzheng/articles/143311.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liuzheng/comments/commentRss/143311.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liuzheng/services/trackbacks/143311.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Chapter&nbsp;7.&nbsp;Spring AOP APIs7.1.&nbsp;简介前一章介绍了Spring 2.0中提供的由@AspectJ和基于Schema的两种切面定义的AOP。在这个章节里，我们将 讨论更底层的Spring AOP API，以及如何在Spring 1.2应用中使用这些API。对于新的应用程序，我们推荐 使用...&nbsp;&nbsp;<a href='http://www.blogjava.net/liuzheng/articles/143311.html'>阅读全文</a><img src ="http://www.blogjava.net/liuzheng/aggbug/143311.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuzheng/" target="_blank">刘铮 </a> 2007-09-07 09:19 <a href="http://www.blogjava.net/liuzheng/articles/143311.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring学习心得（五）</title><link>http://www.blogjava.net/liuzheng/articles/142935.html</link><dc:creator>刘铮 </dc:creator><author>刘铮 </author><pubDate>Wed, 05 Sep 2007 08:50:00 GMT</pubDate><guid>http://www.blogjava.net/liuzheng/articles/142935.html</guid><wfw:comment>http://www.blogjava.net/liuzheng/comments/142935.html</wfw:comment><comments>http://www.blogjava.net/liuzheng/articles/142935.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liuzheng/comments/commentRss/142935.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liuzheng/services/trackbacks/142935.html</trackback:ping><description><![CDATA[&nbsp;
<p class="MsoNormal"><span lang="EN-US" style="font-size: 14pt">Spring</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">学习心得（五）</span><span lang="EN-US" style="font-size: 14pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 21pt; text-indent: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt"><span lang="EN-US" style="font-size: 14pt; mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">1.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对</span><span lang="EN-US" style="font-size: 14pt">advice</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">细粒度的控制，可以通过</span><span lang="EN-US" style="font-size: 14pt">pointcut</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">类来控制。</span><span lang="EN-US" style="font-size: 14pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 21pt; text-indent: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt"><span lang="EN-US" style="font-size: 14pt; mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">2.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span lang="EN-US" style="font-size: 14pt">advisor</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是</span><span lang="EN-US" style="font-size: 14pt">advice</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</span><span lang="EN-US" style="font-size: 14pt">pointcut</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的集合体。</span><span lang="EN-US" style="font-size: 14pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 21pt; text-indent: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt"><span lang="EN-US" style="font-size: 14pt; mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">3.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">控制方法如下：</span><span lang="EN-US" style="font-size: 14pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 42pt; text-indent: -21pt; mso-list: l0 level2 lfo1; tab-stops: list 42.0pt"><span lang="EN-US" style="font-size: 14pt; mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">a)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">定义</span><span lang="EN-US" style="font-size: 14pt">Pointcut</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中的</span><span lang="EN-US" style="font-size: 14pt">ClassFilter</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">实现类和</span><span lang="EN-US" style="font-size: 14pt">MethodMatcher</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">实现类，完成对</span><span lang="EN-US" style="font-size: 14pt">class</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</span><span lang="EN-US" style="font-size: 14pt">method</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法的</span><span lang="EN-US" style="font-size: 14pt">advice</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的控制，其中</span><span lang="EN-US" style="font-size: 14pt">MethodMatcher</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中的</span><span lang="EN-US" style="font-size: 14pt; mso-bidi-font-weight: bold">matches</span><span lang="EN-US" style="font-size: 14pt">(Method&nbsp;method, Class&nbsp;targetClass)</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法是对</span><span lang="EN-US" style="font-size: 14pt">class</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</span><span lang="EN-US" style="font-size: 14pt">method</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的双重并集控制</span><span lang="EN-US" style="font-size: 14pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 42pt; text-indent: -21pt; mso-list: l0 level2 lfo1; tab-stops: list 42.0pt"><span lang="EN-US" style="font-size: 14pt; mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">b)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">定义新的</span><span lang="EN-US" style="font-size: 14pt">Pointcut</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">实现类，并将</span><span lang="EN-US" style="font-size: 14pt">ClassFilter</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">实现类和</span><span lang="EN-US" style="font-size: 14pt">MethodMatcher</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">实现类赋值</span><span lang="EN-US" style="font-size: 14pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 42pt; text-indent: -21pt; mso-list: l0 level2 lfo1; tab-stops: list 42.0pt"><span lang="EN-US" style="font-size: 14pt; mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">c)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">定义新的</span><span lang="EN-US" style="font-size: 14pt">advisor</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">并且实现</span><span lang="EN-US" style="font-size: 14pt">PointcutAdvisor</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">接口</span><span lang="EN-US" style="font-size: 14pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 42pt; text-indent: -21pt; mso-list: l0 level2 lfo1; tab-stops: list 42.0pt"><span lang="EN-US" style="font-size: 14pt; mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">d)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在定义的</span><span lang="EN-US" style="font-size: 14pt">advisor</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中使用</span><span lang="EN-US" style="font-size: 14pt">PointcutAdvisor</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">接口中的</span><span lang="EN-US" style="font-size: 14pt">getPointcut()</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</span><span lang="EN-US" style="font-size: 14pt">getAdvice()</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">将</span><span lang="EN-US" style="font-size: 14pt">Pointcut</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的实现类和需要的</span><span lang="EN-US" style="font-size: 14pt">advice</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">进行传递</span><span lang="EN-US" style="font-size: 14pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 42pt; text-indent: -21pt; mso-list: l0 level2 lfo1; tab-stops: list 42.0pt"><span lang="EN-US" style="font-size: 14pt; mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">e)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">最后在</span><span lang="EN-US" style="font-size: 14pt">application-context.xml</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中将</span><span lang="EN-US" style="font-size: 14pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 21pt; text-indent: 21pt"><span lang="EN-US" style="font-size: 14pt">&lt;bean id="XXXX"<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 21pt; text-indent: 21pt"><span lang="EN-US" style="font-size: 14pt">class="org.springframework.aop.framework.ProxyFactoryBean"&gt;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 21pt; text-indent: 21pt"><span lang="EN-US" style="font-size: 14pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&lt;property name="InterceptorNames"&gt;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 21pt; text-indent: 21pt"><span lang="EN-US" style="font-size: 14pt"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&lt;list&gt;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 21pt; text-indent: 21pt"><span lang="EN-US" style="font-size: 14pt"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&lt;idref local="</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">定义新的</span><span lang="EN-US" style="font-size: 14pt">advisor</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的</span><span lang="EN-US" style="font-size: 14pt">id"&gt;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 21pt; text-indent: 21pt"><span lang="EN-US" style="font-size: 14pt"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&lt;/list&gt;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 21pt; text-indent: 21pt"><span lang="EN-US" style="font-size: 14pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&lt;property&gt;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 21pt; text-indent: 21pt"><span lang="EN-US" style="font-size: 14pt">&lt;/bean&gt;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 21pt; text-indent: 21pt"><span lang="EN-US" style="font-size: 14pt">&lt;bean id="</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">定义新的</span><span lang="EN-US" style="font-size: 14pt">advisor</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的</span><span lang="EN-US" style="font-size: 14pt">id" class="</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">定义新的</span><span lang="EN-US" style="font-size: 14pt">advisor</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的类</span><span lang="EN-US" style="font-size: 14pt"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span>" &gt;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 21pt; text-indent: 21pt"><span lang="EN-US" style="font-size: 14pt">&lt;/bean&gt;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 21pt; text-indent: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt"><span lang="EN-US" style="font-size: 14pt; mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">4.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">为了使用静态的</span><span lang="EN-US" style="font-size: 14pt">Pointcut</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，可以使用</span><span lang="EN-US" style="font-size: 14pt">StaticMethodMatcherPointcut</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，这时候</span><span lang="EN-US" style="font-size: 14pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 21pt"><span lang="EN-US" style="font-size: 14pt; mso-bidi-font-weight: bold">public</span><span lang="EN-US" style="font-size: 14pt"> <span style="mso-bidi-font-weight: bold">final</span> <span style="mso-bidi-font-weight: bold">boolean</span> isRuntime()<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 14pt"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>{<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 14pt"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-bidi-font-weight: bold">return</span> <span style="mso-bidi-font-weight: bold">false</span>;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-indent: 28.5pt"><span lang="EN-US" style="font-size: 14pt">}<o:p></o:p></span></p>
<p class="MsoNormal" style="text-indent: 28.5pt"><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">便不能修改了。也就是静态的</span><span lang="EN-US" style="font-size: 14pt">Pointcut<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 21pt; text-indent: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt"><span lang="EN-US" style="font-size: 14pt; mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">5.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">更简单的是使用</span><span lang="EN-US" style="font-size: 14pt">NameMatchMethodPointcutAdvisor</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，这里一个</span><span lang="EN-US" style="font-size: 14pt">advisor</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">只有一个</span><span lang="EN-US" style="font-size: 14pt">advice<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 14pt"><o:p>&nbsp;</o:p></span></p>
v
<img src ="http://www.blogjava.net/liuzheng/aggbug/142935.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuzheng/" target="_blank">刘铮 </a> 2007-09-05 16:50 <a href="http://www.blogjava.net/liuzheng/articles/142935.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring学习心得（四）</title><link>http://www.blogjava.net/liuzheng/articles/142823.html</link><dc:creator>刘铮 </dc:creator><author>刘铮 </author><pubDate>Wed, 05 Sep 2007 02:21:00 GMT</pubDate><guid>http://www.blogjava.net/liuzheng/articles/142823.html</guid><wfw:comment>http://www.blogjava.net/liuzheng/comments/142823.html</wfw:comment><comments>http://www.blogjava.net/liuzheng/articles/142823.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liuzheng/comments/commentRss/142823.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liuzheng/services/trackbacks/142823.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
&nbsp;
<p>&nbsp;</p>
&nbsp;
<p class="MsoNormal"><span lang="EN-US" style="font-size: 14pt">Spring</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">学习心得（四）</span><span lang="EN-US" style="font-size: 14pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 21pt; text-indent: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt"><span lang="EN-US" style="font-size: 14pt; mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">1.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span lang="EN-US" style="font-size: 14pt">Spring</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对</span><span lang="EN-US" style="font-size: 14pt">Struts</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">连接：为了在</span><span lang="EN-US" style="font-size: 14pt">Struts</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中使用</span><span lang="EN-US" style="font-size: 14pt">Spring ,</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">需要在</span><span lang="EN-US" style="font-size: 14pt">Struts</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的</span><span lang="EN-US" style="font-size: 14pt">congfig</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中加入</span><span lang="EN-US" style="font-size: 14pt"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 14pt">&lt;plug-in className="org.springframework.web.struts.ContextLoaderPlugIn"&gt;<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 14pt"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&lt;set-property property="contextConfigLocation" <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 14pt"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>value="/WEB-INF/applicationContext.xml"/&gt;<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 14pt"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>&lt;/plug-in&gt;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 21pt; text-indent: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt"><span lang="EN-US" style="font-size: 14pt; mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">2.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对于</span><span lang="EN-US" style="font-size: 14pt">action</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的</span><span lang="EN-US" style="font-size: 14pt">Spring</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的应用有两种方法：</span><span lang="EN-US" style="font-size: 14pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 42pt; text-indent: -21pt; mso-list: l0 level2 lfo1; tab-stops: list 42.0pt"><span lang="EN-US" style="font-size: 14pt; mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">a)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span lang="EN-US" style="font-size: 14pt">Extends ActionSupport</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，使用其中的</span><span lang="EN-US" style="font-size: 14pt">getWebApplicationContext()</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">得到</span><span lang="EN-US" style="font-size: 14pt">ApplicationContext</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，在通过</span><span lang="EN-US" style="font-size: 14pt">getBean()</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法得到所需要的类，不过这样的话</span><span lang="EN-US" style="font-size: 14pt">Struts</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">就和</span><span lang="EN-US" style="font-size: 14pt">Spring</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">耦合在一起了。</span><span lang="EN-US" style="font-size: 14pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 42pt; text-indent: -21pt; mso-list: l0 level2 lfo1; tab-stops: list 42.0pt"><span lang="EN-US" style="font-size: 14pt; mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">b)<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">重新</span><span lang="EN-US" style="font-size: 14pt">Delegating actions </span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">：在</span><span lang="EN-US" style="font-size: 14pt">Struts</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的</span><span lang="EN-US" style="font-size: 14pt">congfig</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">进行配置：</span><span lang="EN-US" style="font-size: 14pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 21pt"><span lang="EN-US" style="font-size: 14pt">&lt;action path="/XXXX"<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 21pt"><span lang="EN-US" style="font-size: 14pt">type="org.springframework.web.struts.DelegatingActionProxy"/&gt;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 21pt"><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">然后在</span><span lang="EN-US" style="font-size: 14pt">Spring</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中进行</span><span lang="EN-US" style="font-size: 14pt">bean</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的配置：</span><span lang="EN-US" style="font-size: 14pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 21pt"><span lang="EN-US" style="font-size: 14pt">&lt;bean name="/XXXX"<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 21pt"><v:shapetype id="_x0000_t61" path="m,l0@8@12@24,0@9,,21600@6,21600@15@27@7,21600,21600,21600,21600@9@18@30,21600@8,21600,0@7,0@21@33@6,xe" adj="1350,25920" o:spt="61" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="sum 10800 0 #0"></v:f><v:f eqn="sum 10800 0 #1"></v:f><v:f eqn="sum #0 0 #1"></v:f><v:f eqn="sum @0 @1 0"></v:f><v:f eqn="sum 21600 0 #0"></v:f><v:f eqn="sum 21600 0 #1"></v:f><v:f eqn="if @0 3600 12600"></v:f><v:f eqn="if @0 9000 18000"></v:f><v:f eqn="if @1 3600 12600"></v:f><v:f eqn="if @1 9000 18000"></v:f><v:f eqn="if @2 0 #0"></v:f><v:f eqn="if @3 @10 0"></v:f><v:f eqn="if #0 0 @11"></v:f><v:f eqn="if @2 @6 #0"></v:f><v:f eqn="if @3 @6 @13"></v:f><v:f eqn="if @5 @6 @14"></v:f><v:f eqn="if @2 #0 21600"></v:f><v:f eqn="if @3 21600 @16"></v:f><v:f eqn="if @4 21600 @17"></v:f><v:f eqn="if @2 #0 @6"></v:f><v:f eqn="if @3 @19 @6"></v:f><v:f eqn="if #1 @6 @20"></v:f><v:f eqn="if @2 @8 #1"></v:f><v:f eqn="if @3 @22 @8"></v:f><v:f eqn="if #0 @8 @23"></v:f><v:f eqn="if @2 21600 #1"></v:f><v:f eqn="if @3 21600 @25"></v:f><v:f eqn="if @5 21600 @26"></v:f><v:f eqn="if @2 #1 @8"></v:f><v:f eqn="if @3 @8 @28"></v:f><v:f eqn="if @4 @8 @29"></v:f><v:f eqn="if @2 #1 0"></v:f><v:f eqn="if @3 @31 0"></v:f><v:f eqn="if #1 0 @32"></v:f><v:f eqn="val #0"></v:f><v:f eqn="val #1"></v:f></v:formulas><v:path o:connectlocs="10800,0;0,10800;10800,21600;21600,10800;@34,@35" o:connecttype="custom"></v:path><v:handles><v:h position="#0,#1"></v:h></v:handles></v:shapetype><v:shape id="_x0000_s1027" style="margin-top: 6pt; z-index: 2; left: 0px; margin-left: 201.6pt; width: 1in; position: absolute; height: 117pt; text-align: left; mso-position-horizontal: absolute; mso-position-vertical: absolute" adj="-6795,14520" type="#_x0000_t61"><v:textbox>
<table cellspacing="0" cellpadding="0" width="100%">
    <tbody>
        <tr>
            <td>
            <div>
            <p class="MsoNormal"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这里为需要用到的</span><span lang="EN-US">class</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，通过</span><span lang="EN-US">Ioc</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">来进行配置</span> </p>
            </div>
            </td>
        </tr>
    </tbody>
</table>
</v:textbox></v:shape><v:rect id="_x0000_s1026" style="margin-top: 29.4pt; z-index: -2; left: 0px; margin-left: 21.6pt; width: 159pt; position: absolute; height: 101.4pt; text-align: left; mso-position-horizontal: absolute; mso-position-vertical: absolute" strokecolor="blue"></v:rect><span lang="EN-US" style="font-size: 14pt">class="XXXXXXXX"&gt;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 21pt"><span lang="EN-US" style="font-size: 14pt">&lt;property name="YYYY"&gt;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 21pt"><span lang="EN-US" style="font-size: 14pt">&lt;ref bean="YYYY"/&gt;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 21pt"><span lang="EN-US" style="font-size: 14pt">&lt;/property&gt;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 21pt"><span lang="EN-US" style="font-size: 14pt">&lt;/bean&gt;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 21pt"><span lang="EN-US" style="font-size: 14pt">&lt;bean id="YYYY" class="YYYYYY"&gt;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 21pt"><span lang="EN-US" style="font-size: 14pt">&lt;/bean&gt;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 21pt"><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">当然也可以在</span><span lang="EN-US" style="font-size: 14pt">struts</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中加入</span><span lang="EN-US" style="font-size: 14pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 21pt"><span lang="EN-US" style="font-size: 14pt">&lt;controller processorClass=<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 21pt"><span lang="EN-US" style="font-size: 14pt">"org.springframework.web.struts.DelegatingRequestProcessor"/&gt;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 21pt"><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这样就只需要写</span><span lang="EN-US" style="font-size: 14pt"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 21pt"><span lang="EN-US" style="font-size: 14pt">&lt;action path="/XXXX"/&gt;</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">就可以了，</span><span lang="EN-US" style="font-size: 14pt">DelegatingRequestProcessor</span><span style="font-size: 14pt; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">能够自动分派</span><span lang="EN-US" style="font-size: 14pt"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 14pt"><span style="mso-spacerun: yes">&nbsp;</span><o:p></o:p></span></p>
<img src ="http://www.blogjava.net/liuzheng/aggbug/142823.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuzheng/" target="_blank">刘铮 </a> 2007-09-05 10:21 <a href="http://www.blogjava.net/liuzheng/articles/142823.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring学习心得（三）</title><link>http://www.blogjava.net/liuzheng/articles/142697.html</link><dc:creator>刘铮 </dc:creator><author>刘铮 </author><pubDate>Tue, 04 Sep 2007 09:27:00 GMT</pubDate><guid>http://www.blogjava.net/liuzheng/articles/142697.html</guid><wfw:comment>http://www.blogjava.net/liuzheng/comments/142697.html</wfw:comment><comments>http://www.blogjava.net/liuzheng/articles/142697.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liuzheng/comments/commentRss/142697.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liuzheng/services/trackbacks/142697.html</trackback:ping><description><![CDATA[在Around advice 的invoke方法中，对象MethodInvocation很重要，getArgument（）方法可以得到拦截调用方法的参数，如：methodinvocation.getArgument()[]<br />
<br />
isAssignableForm可以对两个Class进行比较，比如：XXX.class.isAssignableFrom(methodinvocation.getMethod().getDeclaringClass())<br />
在Before advice的public void before(Method m, Object[] args, Object target) throws Throwable {}中可以用以下方法进行比较：target instanceof XXX
<img src ="http://www.blogjava.net/liuzheng/aggbug/142697.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuzheng/" target="_blank">刘铮 </a> 2007-09-04 17:27 <a href="http://www.blogjava.net/liuzheng/articles/142697.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring学习心得（二）</title><link>http://www.blogjava.net/liuzheng/articles/142648.html</link><dc:creator>刘铮 </dc:creator><author>刘铮 </author><pubDate>Tue, 04 Sep 2007 07:59:00 GMT</pubDate><guid>http://www.blogjava.net/liuzheng/articles/142648.html</guid><wfw:comment>http://www.blogjava.net/liuzheng/comments/142648.html</wfw:comment><comments>http://www.blogjava.net/liuzheng/articles/142648.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liuzheng/comments/commentRss/142648.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liuzheng/services/trackbacks/142648.html</trackback:ping><description><![CDATA[&nbsp;
<p class="MsoNormal"><span lang="EN-US">Spring</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">学习心得（二）</span></p>
<p class="MsoNormal" style="margin-left: 21pt; text-indent: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">1.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span lang="EN-US">advice</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">有四种：</span><span lang="EN-US">Before advice </span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</span><span lang="EN-US">After advice </span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</span><span lang="EN-US">Around advice ,Throws advice</span></p>
<p class="MsoNormal" style="margin-left: 21pt; text-indent: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt"><span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">2.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这四种</span><span lang="EN-US">advice</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">分别需要继承的接口为</span></p>
<table class="MsoNormalTable" style="border-right: medium none; border-top: medium none; border-left: medium none; width: 100%; border-bottom: medium none; border-collapse: collapse; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-border-insideh: .5pt solid windowtext; mso-border-insidev: .5pt solid windowtext" cellspacing="0" cellpadding="0" width="100%" border="1">
    <tbody>
        <tr style="height: 22.8pt; mso-yfti-irow: 0; mso-yfti-firstrow: yes">
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; background: #a6a6a6; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 22.42%; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 22.8pt; mso-border-alt: solid windowtext .5pt" valign="top" width="22%">
            <p class="MsoNormal" style="text-align: center" align="center"><span lang="EN-US">Advice type</span></p>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; background: #a6a6a6; padding-bottom: 0cm; border-left: medium none; width: 77.58%; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 22.8pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt" valign="top" width="77%">
            <p class="MsoNormal" style="text-align: center" align="center"><span lang="EN-US">Interface</span></p>
            </td>
        </tr>
        <tr style="height: 22.25pt; mso-yfti-irow: 1">
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 22.42%; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 22.25pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="22%">
            <p class="MsoNormal" style="text-align: center" align="center"><span lang="EN-US">Throws advice</span></p>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 77.58%; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 22.25pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="77%">
            <p class="MsoNormal" style="text-align: center" align="center"><span lang="EN-US">org.aopalliance.intercept.MethodInterceptor</span></p>
            </td>
        </tr>
        <tr style="height: 29.55pt; mso-yfti-irow: 2">
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 22.42%; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 29.55pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="22%">
            <p class="MsoNormal" style="text-align: center" align="center"><span lang="EN-US">Before advice</span></p>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 77.58%; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 29.55pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="77%">
            <p class="MsoNormal" style="text-align: center" align="center"><span lang="EN-US">org.springframework.aop.BeforeAdvice</span></p>
            </td>
        </tr>
        <tr style="height: 29.15pt; mso-yfti-irow: 3">
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 22.42%; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 29.15pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="22%">
            <p class="MsoNormal" style="text-align: center" align="center"><span lang="EN-US">After advice</span></p>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 77.58%; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 29.15pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="77%">
            <p class="MsoNormal" style="text-align: center" align="center"><span lang="EN-US">org.springframework.aop.AfterReturningAdvice</span></p>
            </td>
        </tr>
        <tr style="height: 29.4pt; mso-yfti-irow: 4; mso-yfti-lastrow: yes">
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 22.42%; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 29.4pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="22%">
            <p class="MsoNormal" style="text-align: center" align="center"><span lang="EN-US">Throws advice</span></p>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 77.58%; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 29.4pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="77%">
            <p class="MsoNormal" style="text-align: center" align="center"><span lang="EN-US">org.springframework.aop.ThrowsAdvice</span></p>
            </td>
        </tr>
    </tbody>
</table>
<p class="MsoNormal"><span lang="EN-US">3</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">．</span><span lang="EN-US">Around advice</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</span><span lang="EN-US">Before advice</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的区别是</span><span lang="EN-US">Before advice</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是只要没有异常，目标方法一定会被调用，然而</span><span lang="EN-US">Around advice</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，只有当调用</span><span lang="EN-US">MethodInvocation.proceed()</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">后目标方法才能被调用。而且</span><span lang="EN-US">Around advice</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">还可以返回想返回的值：如</span><span lang="EN-US">Object obj=invocation.proceed();</span></p><img src ="http://www.blogjava.net/liuzheng/aggbug/142648.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuzheng/" target="_blank">刘铮 </a> 2007-09-04 15:59 <a href="http://www.blogjava.net/liuzheng/articles/142648.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>