﻿<?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-My Rhythm-随笔分类-Spring</title><link>http://www.blogjava.net/redcoatjk/category/46446.html</link><description>万物皆对象 万事归节奏</description><language>zh-cn</language><lastBuildDate>Fri, 02 Sep 2011 05:58:45 GMT</lastBuildDate><pubDate>Fri, 02 Sep 2011 05:58:45 GMT</pubDate><ttl>60</ttl><item><title>[原]spring学习笔记9.1.2-Spring对Aop的概念性介绍</title><link>http://www.blogjava.net/redcoatjk/archive/2011/06/26/353036.html</link><dc:creator>redcoatjk</dc:creator><author>redcoatjk</author><pubDate>Sun, 26 Jun 2011 13:58:00 GMT</pubDate><guid>http://www.blogjava.net/redcoatjk/archive/2011/06/26/353036.html</guid><wfw:comment>http://www.blogjava.net/redcoatjk/comments/353036.html</wfw:comment><comments>http://www.blogjava.net/redcoatjk/archive/2011/06/26/353036.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/redcoatjk/comments/commentRss/353036.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/redcoatjk/services/trackbacks/353036.html</trackback:ping><description><![CDATA[<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font face="Times New Roman">AOP</font></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: 0cm 0cm 0pt"><span lang="EN-US"><font face="Times New Roman">1. </font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">正常的编程为从上到下的调用</span><span lang="EN-US"><font face="Times New Roman">,</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">执行<br /><br /><img height="273" alt="" src="http://www.blogjava.net/images/blogjava_net/redcoatjk/image002.jpg" width="164" border="0" /><br /><br /></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path><o:lock v:ext="edit" aspectratio="t"></o:lock></v:shapetype></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font face="Times New Roman">2. </font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">加入了安全性检查</span><span lang="EN-US"><font face="Times New Roman">,</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">日志这样的代码</span><span lang="EN-US"><font face="Times New Roman">. </font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这是一个横切的问题</span><span lang="EN-US"><font face="Times New Roman">,</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">其于正常的业务毫无关系</span><span lang="EN-US"><font face="Times New Roman">.</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">横切的问题会散布在代码的各个角落<br /></span><span lang="EN-US"><font face="Times New Roman">.<img height="253" alt="" src="http://www.blogjava.net/images/blogjava_net/redcoatjk/image004.jpg" width="182" border="0" /><br /><br /><br /></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US"></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font face="Times New Roman">3.</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这个横切就是横切性的关注点</span><span lang="EN-US"><font face="Times New Roman">: Cross cutting concern<br /></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US"></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font face="Times New Roman"><img height="260" alt="" src="http://www.blogjava.net/images/blogjava_net/redcoatjk/image006.jpg" width="324" border="0" /><br /><br /><br /><br />4. </font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">将横切的关注点都放在一个类中</span><span lang="EN-US"><font face="Times New Roman">(</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">如动态代理项目中的</span><span lang="EN-US"><font face="Times New Roman">SecurityHandler.java).</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这个类就叫做切面</span><span lang="EN-US"><font face="Times New Roman">.</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><span style="mso-spacerun: yes"><font face="Times New Roman">&nbsp;&nbsp; </font></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"><font face="Times New Roman">,</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这个模块化的类就叫做切面类</span><span lang="EN-US"><font face="Times New Roman">(Aspect</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对应的类</span><span lang="EN-US"><font face="Times New Roman">) ,</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US"></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font face="Times New Roman"><img alt="" src="http://www.blogjava.net/images/blogjava_net/redcoatjk/image008.jpg" border="0" /><br />&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font face="Times New Roman">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font face="Times New Roman">5. </font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在切面类中对某个问题如日志或安全性检查的具体实现方法</span><span lang="EN-US"><font face="Times New Roman">,</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">叫做横切关注点的具体实现</span><span lang="EN-US"><font face="Times New Roman">(</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">称为</span><span lang="EN-US"><font face="Times New Roman">Advice).</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US"></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font face="Times New Roman"><img height="290" alt="" src="http://www.blogjava.net/images/blogjava_net/redcoatjk/image010.jpg" width="554" border="0" /><br /><br /><br /><span lang="EN-US"><o:p><font face="Times New Roman"><img height="394" alt="" src="http://www.blogjava.net/images/blogjava_net/redcoatjk/image012.jpg" width="553" border="0" /></font></o:p></span><br /><br />&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US"></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font face="Times New Roman">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font face="Times New Roman">6. </font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这个</span><span lang="EN-US"><font face="Times New Roman">Advice</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">可以进行分类</span><span lang="EN-US"><font face="Times New Roman">. :</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在业务方法执行之前</span><span lang="EN-US"><font face="Times New Roman">,</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">之后</span><span lang="EN-US"><font face="Times New Roman">.</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">异常时候</span><span lang="EN-US"><font face="Times New Roman">&#8230;&#8230;</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US"></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font face="Times New Roman"><img height="377" alt="" src="http://www.blogjava.net/images/blogjava_net/redcoatjk/image014.jpg" width="553" border="0" /><br />&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font face="Times New Roman">7. Advice</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">应用的目标方法范围</span><span lang="EN-US"><font face="Times New Roman">(</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">那些方法之前</span><span lang="EN-US"><font face="Times New Roman">,</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">之后</span><span lang="EN-US"><font face="Times New Roman">,</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">异常</span><span lang="EN-US"><font face="Times New Roman">&#8230;.)</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这个过滤范围叫做<strong style="mso-bidi-font-weight: normal">切入点</strong></span><span lang="EN-US"><font face="Times New Roman">Pointcut()</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US"></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font face="Times New Roman"><img height="393" alt="" src="http://www.blogjava.net/images/blogjava_net/redcoatjk/image016.jpg" width="553" border="0" /><br />&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font face="Times New Roman">8 .</font></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: 0cm 0cm 0pt"><span lang="EN-US"><font face="Times New Roman">Advice</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">应用的目标方法的过程叫做<strong style="mso-bidi-font-weight: normal">植入</strong></span><span lang="EN-US"><font face="Times New Roman">(Weave)</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font face="Times New Roman">Spring</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">只支持针对业务方法执行前</span><span lang="EN-US"><font face="Times New Roman">,</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">执行后进行植入</span><span lang="EN-US"><font face="Times New Roman">. </font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">即只支持<strong style="mso-bidi-font-weight: normal">方法</strong>级别的植入</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">植入的地方就叫做<strong style="mso-bidi-font-weight: normal">连接点</strong></span><span lang="EN-US"><font face="Times New Roman">.</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><font face="Times New Roman">Spring</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的</span><span lang="EN-US"><font face="Times New Roman">Aop</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是使用代理模式</span><span lang="EN-US"><font face="Times New Roman">.</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font face="Times New Roman">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><strong style="mso-bidi-font-weight: normal"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">横切问题的处理思路</span><span lang="EN-US"><font face="Times New Roman">:<o:p></o:p></font></span></strong></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><strong style="mso-bidi-font-weight: normal"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">发现横切性的问题</span><span lang="EN-US"><font face="Times New Roman">,</font></span></strong><strong style="mso-bidi-font-weight: normal"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">将其模块化</span><span lang="EN-US"><font face="Times New Roman">(</font></span></strong><strong style="mso-bidi-font-weight: normal"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">切片</span><span lang="EN-US"><font face="Times New Roman">).</font></span></strong><strong style="mso-bidi-font-weight: normal"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">然后形成切片类</span><span lang="EN-US"><font face="Times New Roman">,</font></span></strong><strong style="mso-bidi-font-weight: normal"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在其中实现这些横切性的功能</span><span lang="EN-US"><font face="Times New Roman">.<o:p></o:p></font></span></strong></p><img src ="http://www.blogjava.net/redcoatjk/aggbug/353036.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/redcoatjk/" target="_blank">redcoatjk</a> 2011-06-26 21:58 <a href="http://www.blogjava.net/redcoatjk/archive/2011/06/26/353036.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>