﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-神魂颠倒-文章分类-Spring</title><link>http://www.blogjava.net/star/category/33292.html</link><description>Memo</description><language>zh-cn</language><lastBuildDate>Fri, 25 Jul 2008 16:20:12 GMT</lastBuildDate><pubDate>Fri, 25 Jul 2008 16:20:12 GMT</pubDate><ttl>60</ttl><item><title>Sharing common pointcut definitions</title><link>http://www.blogjava.net/star/articles/217586.html</link><dc:creator>star</dc:creator><author>star</author><pubDate>Fri, 25 Jul 2008 14:53:00 GMT</pubDate><guid>http://www.blogjava.net/star/articles/217586.html</guid><wfw:comment>http://www.blogjava.net/star/comments/217586.html</wfw:comment><comments>http://www.blogjava.net/star/articles/217586.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/star/comments/commentRss/217586.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/star/services/trackbacks/217586.html</trackback:ping><description><![CDATA[<p>When working with enterprise applications, you often want to refer to modules of the application and particular sets of operations from within several aspects. We recommend defining a "SystemArchitecture" aspect that captures common pointcut expressions for this purpose. A typical such aspect would look as follows:<br />
</p>
<p>&nbsp;</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;com.xyz.someapp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.aspectj.lang.annotation.Aspect;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.aspectj.lang.annotation.Pointcut;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />@Aspect<br />
<img id="Codehighlighter1_155_2024_Open_Image" onclick="this.style.display='none'; Codehighlighter1_155_2024_Open_Text.style.display='none'; Codehighlighter1_155_2024_Closed_Image.style.display='inline'; Codehighlighter1_155_2024_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_155_2024_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_155_2024_Closed_Text.style.display='none'; Codehighlighter1_155_2024_Open_Image.style.display='inline'; Codehighlighter1_155_2024_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;SystemArchitecture&nbsp;</span><span id="Codehighlighter1_155_2024_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_155_2024_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_160_317_Open_Image" onclick="this.style.display='none'; Codehighlighter1_160_317_Open_Text.style.display='none'; Codehighlighter1_160_317_Closed_Image.style.display='inline'; Codehighlighter1_160_317_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_160_317_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_160_317_Closed_Text.style.display='none'; Codehighlighter1_160_317_Open_Image.style.display='inline'; Codehighlighter1_160_317_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span id="Codehighlighter1_160_317_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**&nbsp;*/</span><span id="Codehighlighter1_160_317_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;*&nbsp;A&nbsp;join&nbsp;point&nbsp;is&nbsp;in&nbsp;the&nbsp;web&nbsp;layer&nbsp;if&nbsp;the&nbsp;method&nbsp;is&nbsp;defined<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;*&nbsp;in&nbsp;a&nbsp;type&nbsp;in&nbsp;the&nbsp;com.xyz.someapp.web&nbsp;package&nbsp;or&nbsp;any&nbsp;sub-package<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;*&nbsp;under&nbsp;that.<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;@Pointcut(</span><span style="color: #000000">"</span><span style="color: #000000">within(com.xyz.someapp.web..*)</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
<img id="Codehighlighter1_392_393_Open_Image" onclick="this.style.display='none'; Codehighlighter1_392_393_Open_Text.style.display='none'; Codehighlighter1_392_393_Closed_Image.style.display='inline'; Codehighlighter1_392_393_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_392_393_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_392_393_Closed_Text.style.display='none'; Codehighlighter1_392_393_Open_Image.style.display='inline'; Codehighlighter1_392_393_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;inWebLayer()&nbsp;</span><span id="Codehighlighter1_392_393_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_392_393_Open_Text"><span style="color: #000000">{}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_398_563_Open_Image" onclick="this.style.display='none'; Codehighlighter1_398_563_Open_Text.style.display='none'; Codehighlighter1_398_563_Closed_Image.style.display='inline'; Codehighlighter1_398_563_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_398_563_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_398_563_Closed_Text.style.display='none'; Codehighlighter1_398_563_Open_Image.style.display='inline'; Codehighlighter1_398_563_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span id="Codehighlighter1_398_563_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**&nbsp;*/</span><span id="Codehighlighter1_398_563_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;*&nbsp;A&nbsp;join&nbsp;point&nbsp;is&nbsp;in&nbsp;the&nbsp;service&nbsp;layer&nbsp;if&nbsp;the&nbsp;method&nbsp;is&nbsp;defined<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;*&nbsp;in&nbsp;a&nbsp;type&nbsp;in&nbsp;the&nbsp;com.xyz.someapp.service&nbsp;package&nbsp;or&nbsp;any&nbsp;sub-package<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;*&nbsp;under&nbsp;that.<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;@Pointcut(</span><span style="color: #000000">"</span><span style="color: #000000">within(com.xyz.someapp.service..*)</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
<img id="Codehighlighter1_646_647_Open_Image" onclick="this.style.display='none'; Codehighlighter1_646_647_Open_Text.style.display='none'; Codehighlighter1_646_647_Closed_Image.style.display='inline'; Codehighlighter1_646_647_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_646_647_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_646_647_Closed_Text.style.display='none'; Codehighlighter1_646_647_Open_Image.style.display='inline'; Codehighlighter1_646_647_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;inServiceLayer()&nbsp;</span><span id="Codehighlighter1_646_647_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_646_647_Open_Text"><span style="color: #000000">{}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_652_817_Open_Image" onclick="this.style.display='none'; Codehighlighter1_652_817_Open_Text.style.display='none'; Codehighlighter1_652_817_Closed_Image.style.display='inline'; Codehighlighter1_652_817_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_652_817_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_652_817_Closed_Text.style.display='none'; Codehighlighter1_652_817_Open_Image.style.display='inline'; Codehighlighter1_652_817_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span id="Codehighlighter1_652_817_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**&nbsp;*/</span><span id="Codehighlighter1_652_817_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;*&nbsp;A&nbsp;join&nbsp;point&nbsp;is&nbsp;in&nbsp;the&nbsp;data&nbsp;access&nbsp;layer&nbsp;if&nbsp;the&nbsp;method&nbsp;is&nbsp;defined<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;*&nbsp;in&nbsp;a&nbsp;type&nbsp;in&nbsp;the&nbsp;com.xyz.someapp.dao&nbsp;package&nbsp;or&nbsp;any&nbsp;sub-package<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;*&nbsp;under&nbsp;that.<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;@Pointcut(</span><span style="color: #000000">"</span><span style="color: #000000">within(com.xyz.someapp.dao..*)</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
<img id="Codehighlighter1_899_900_Open_Image" onclick="this.style.display='none'; Codehighlighter1_899_900_Open_Text.style.display='none'; Codehighlighter1_899_900_Closed_Image.style.display='inline'; Codehighlighter1_899_900_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_899_900_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_899_900_Closed_Text.style.display='none'; Codehighlighter1_899_900_Open_Image.style.display='inline'; Codehighlighter1_899_900_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;inDataAccessLayer()&nbsp;</span><span id="Codehighlighter1_899_900_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_899_900_Open_Text"><span style="color: #000000">{}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_905_1593_Open_Image" onclick="this.style.display='none'; Codehighlighter1_905_1593_Open_Text.style.display='none'; Codehighlighter1_905_1593_Closed_Image.style.display='inline'; Codehighlighter1_905_1593_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_905_1593_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_905_1593_Closed_Text.style.display='none'; Codehighlighter1_905_1593_Open_Image.style.display='inline'; Codehighlighter1_905_1593_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span id="Codehighlighter1_905_1593_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**&nbsp;*/</span><span id="Codehighlighter1_905_1593_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;*&nbsp;A&nbsp;business&nbsp;service&nbsp;is&nbsp;the&nbsp;execution&nbsp;of&nbsp;any&nbsp;method&nbsp;defined&nbsp;on&nbsp;a&nbsp;service<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;*&nbsp;interface.&nbsp;This&nbsp;definition&nbsp;assumes&nbsp;that&nbsp;interfaces&nbsp;are&nbsp;placed&nbsp;in&nbsp;the<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;*&nbsp;"service"&nbsp;package,&nbsp;and&nbsp;that&nbsp;implementation&nbsp;types&nbsp;are&nbsp;in&nbsp;sub-packages.<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;*&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;*&nbsp;If&nbsp;you&nbsp;group&nbsp;service&nbsp;interfaces&nbsp;by&nbsp;functional&nbsp;area&nbsp;(for&nbsp;example,&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;*&nbsp;in&nbsp;packages&nbsp;com.xyz.someapp.abc.service&nbsp;and&nbsp;com.xyz.def.service)&nbsp;then<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;*&nbsp;the&nbsp;pointcut&nbsp;expression&nbsp;"execution(*&nbsp;com.xyz.someapp..service.*.*(..))"<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;*&nbsp;could&nbsp;be&nbsp;used&nbsp;instead.<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;*<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;*&nbsp;Alternatively,&nbsp;you&nbsp;can&nbsp;write&nbsp;the&nbsp;expression&nbsp;using&nbsp;the&nbsp;'bean'<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;*&nbsp;PCD,&nbsp;like&nbsp;so&nbsp;"bean(*Service)".&nbsp;(This&nbsp;assumes&nbsp;that&nbsp;you&nbsp;have<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;*&nbsp;named&nbsp;your&nbsp;Spring&nbsp;service&nbsp;beans&nbsp;in&nbsp;a&nbsp;consistent&nbsp;fashion.)<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;@Pointcut(</span><span style="color: #000000">"</span><span style="color: #000000">execution(*&nbsp;com.xyz.someapp.service.*.*(..))</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
<img id="Codehighlighter1_1687_1688_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1687_1688_Open_Text.style.display='none'; Codehighlighter1_1687_1688_Closed_Image.style.display='inline'; Codehighlighter1_1687_1688_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1687_1688_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1687_1688_Closed_Text.style.display='none'; Codehighlighter1_1687_1688_Open_Image.style.display='inline'; Codehighlighter1_1687_1688_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;businessService()&nbsp;</span><span id="Codehighlighter1_1687_1688_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1687_1688_Open_Text"><span style="color: #000000">{}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;<br />
<img id="Codehighlighter1_1695_1926_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1695_1926_Open_Text.style.display='none'; Codehighlighter1_1695_1926_Closed_Image.style.display='inline'; Codehighlighter1_1695_1926_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1695_1926_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1695_1926_Closed_Text.style.display='none'; Codehighlighter1_1695_1926_Open_Image.style.display='inline'; Codehighlighter1_1695_1926_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span id="Codehighlighter1_1695_1926_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**&nbsp;*/</span><span id="Codehighlighter1_1695_1926_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;*&nbsp;A&nbsp;data&nbsp;access&nbsp;operation&nbsp;is&nbsp;the&nbsp;execution&nbsp;of&nbsp;any&nbsp;method&nbsp;defined&nbsp;on&nbsp;a&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;*&nbsp;dao&nbsp;interface.&nbsp;This&nbsp;definition&nbsp;assumes&nbsp;that&nbsp;interfaces&nbsp;are&nbsp;placed&nbsp;in&nbsp;the<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;*&nbsp;"dao"&nbsp;package,&nbsp;and&nbsp;that&nbsp;implementation&nbsp;types&nbsp;are&nbsp;in&nbsp;sub-packages.<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;@Pointcut(</span><span style="color: #000000">"</span><span style="color: #000000">execution(*&nbsp;com.xyz.someapp.dao.*.*(..))</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
<img id="Codehighlighter1_2020_2021_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2020_2021_Open_Text.style.display='none'; Codehighlighter1_2020_2021_Closed_Image.style.display='inline'; Codehighlighter1_2020_2021_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_2020_2021_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_2020_2021_Closed_Text.style.display='none'; Codehighlighter1_2020_2021_Open_Image.style.display='inline'; Codehighlighter1_2020_2021_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;dataAccessOperation()&nbsp;</span><span id="Codehighlighter1_2020_2021_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_2020_2021_Open_Text"><span style="color: #000000">{}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
<p>The pointcuts defined in such an aspect can be referred to anywhere that you need a pointcut expression. For example, to make the service layer transactional, you could write:</p>
<p>&nbsp;</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">aop:config</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">aop:advisor&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #ff0000">pointcut</span><span style="color: #0000ff">="com.xyz.someapp.SystemArchitecture.businessService()"</span><span style="color: #ff0000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;advice-ref</span><span style="color: #0000ff">="tx-advice"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">aop:config</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">tx:advice&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="tx-advice"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">tx:attributes</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">tx:method&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="*"</span><span style="color: #ff0000">&nbsp;propagation</span><span style="color: #0000ff">="REQUIRED"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">tx:attributes</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">tx:advice</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
<p>The <code class="literal">&lt;aop:config&gt;</code> and <code class="literal">&lt;aop:advisor&gt;</code> elements are discussed in <a title="6.3.&nbsp;Schema-based AOP support" href="file:///D:/Study/Spring/spring-framework-2.5.3/docs/reference/html_single/index.html#aop-schema">Section&nbsp;6.3, &#8220;Schema-based AOP support&#8221;</a>. The transaction elements are discussed in <a title="Chapter&nbsp;9.&nbsp;Transaction management" href="file:///D:/Study/Spring/spring-framework-2.5.3/docs/reference/html_single/index.html#transaction">Chapter&nbsp;9, <em>Transaction management</em></a>.</p>
 <img src ="http://www.blogjava.net/star/aggbug/217586.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/star/" target="_blank">star</a> 2008-07-25 22:53 <a href="http://www.blogjava.net/star/articles/217586.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>