??xml version="1.0" encoding="utf-8" standalone="yes"?>91国在线观看,国产精品一区二区三区四区,国产视频一区不卡http://www.aygfsteel.com/pitey/category/37529.htmlzh-cnWed, 11 Feb 2009 04:05:47 GMTWed, 11 Feb 2009 04:05:47 GMT60?Message Driven POJOhttp://www.aygfsteel.com/pitey/archive/2009/02/11/254198.htmlPiteyPiteyWed, 11 Feb 2009 01:52:00 GMThttp://www.aygfsteel.com/pitey/archive/2009/02/11/254198.htmlhttp://www.aygfsteel.com/pitey/comments/254198.htmlhttp://www.aygfsteel.com/pitey/archive/2009/02/11/254198.html#Feedback0http://www.aygfsteel.com/pitey/comments/commentRss/254198.htmlhttp://www.aygfsteel.com/pitey/services/trackbacks/254198.html江南白 
  
    一直希望那些J字头的协议能有几个提前告老还乡的Q好减轻一下我们的负担Q特别是qWebService满天飞的时代。但gq有很久都轮不到JMS的消失:

    1.因ؓ
    1.它是《Effective Enterprise Java》的一个实c?#160;
    可以把不影响用户执行l果又比较耗时的Q务(比如发邮仉知理员)异步的扔lJMS 服务端去做,而尽快的把屏q返q给用户?br />     而且服务端能够多U程排队响应--高ƈ发的h?br />
    2. 可以在Java世界里达到最高的解耦?br />        ҎWebServiceQJMS的客L与服务端无需直连Q甚x需知晓Ҏ是谁、在哪里、有多少人,只要Ҏq的信息作响应就行了。对牵一发动全n的企业应用来说很ȝ?br />        
     2. 但是
     1. Message Bean带着EJBpȝ荣光Q步骤比较繁杂,你需要实现MessageDrivenBean、MessageListener接口Q还需要设|EJB的配|信息,然后是deploy....

     2. Spring 1.x 提供的JMS Template化了JMS Client端的~程Q但q没有涉及到服务端的攚w?br />
     3. 所以,SpringSide的Message Driven POJOҎ

      Spring JMS Template + ActiveMQ + Jencks

1. 它是Lightweight的,基本上只是普通POJOQ不用搞太多东西?/p>

2. 它是Spring Base的,可以使用Spring的各U特性如IOC、AOP?/p>

3. 它是Effective的,ZJencks的JCA Container实现 pool connectionQcontrol transactions and manage security?/p>

4. 但它是withdout EJB Container的?br />
其实它还不是100% POJOQ除非再用上LingoQ但我已不想走得太远?br />
4.黄金版配|?br />       如果你想找一个ActiveMQ 3.2 Stable?Spring?00%可行的配|文Ӟ估计只能?a target="_blank">SpringSide目里看了。网上的文章Q不是已q时Q就是不切题?br />
     推荐中英两䆾最接近的文:
     L慈朋(IDEA中国): Spring和Message Bean的整?/a>
    
Spring loaded:  Message-Driven POJOs 

     不过它们都有个outdate的地?-ActiveMQ3.2开始不再自带JCA Cotainer了,而是其与Gernimo 合作而成了JencksQ需另外安装?br />
 5.SpringSide旅游指南

      pom.xml里的JMS部分 --所需的依赖包?br />       applicationContext-jms.xml --黄金版配|文件?br />       activemq.xml  --AcitveMQ Broker配置文g?br />       OrderPlaceMDP.java --Message Driven Pojo?br />       JmsTest.java --单元试用例?br />       OrderManger.java的NodifyOrder()函数 --实际应用的地斏V?#160;

 POJO太简单,唯一ȝ的配|文件已注释Q这里也无话了?/p>

Pitey 2009-02-11 09:52 发表评论
]]>
Spring事物拦截器学习笔?/title><link>http://www.aygfsteel.com/pitey/archive/2009/02/10/254143.html</link><dc:creator>Pitey</dc:creator><author>Pitey</author><pubDate>Tue, 10 Feb 2009 15:07:00 GMT</pubDate><guid>http://www.aygfsteel.com/pitey/archive/2009/02/10/254143.html</guid><wfw:comment>http://www.aygfsteel.com/pitey/comments/254143.html</wfw:comment><comments>http://www.aygfsteel.com/pitey/archive/2009/02/10/254143.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/pitey/comments/commentRss/254143.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/pitey/services/trackbacks/254143.html</trackback:ping><description><![CDATA[<p><span style="font-size: 10pt"><span style="font-family: 宋体"><span style="font-size: 12pt"><span style="font-size: 10pt">Spring事物拦截器,按照通知方式分ؓ[前置通知QBefore adviceQ?q回后通知QAfter returning adviceQ?br /> ,抛出后通知QAfter throwing adviceQ?后通知QAfter (finally) adviceQ?环绕通知QAround AdviceQ]<br /> 配置方式分@AspectJ,XMLQ网上比较多的是Spring1.1或xml+@AspectJ方式配置Q例子用XML方式配置</span></span></span></span></p> <p><span style="font-size: 10pt"><span style="font-family: 宋体"><span style="font-size: 12pt"><span style="font-size: 10pt">1.定义切面cL口,切面cd现这个接口。声明(如果被代理的目标对象实现了至一个接口,则会使用JDK动态代理。所有该目标cd实现的接口都被代理。若该目标对象没有实CQ何接口,则创Z个CGLIB代理Q?br /> </span></span></span></span></p> <div style="padding-right: 5px; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left-color: #cccccc; width: 98%; word-break: break-all; padding-top: 4px; background-color: #eeeeee; "><img id="Codehighlighter1_29_94_Open_Image" onclick="this.style.display='none'; Codehighlighter1_29_94_Open_Text.style.display='none'; Codehighlighter1_29_94_Closed_Image.style.display='inline'; Codehighlighter1_29_94_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_29_94_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_29_94_Closed_Text.style.display='none'; Codehighlighter1_29_94_Open_Image.style.display='inline'; Codehighlighter1_29_94_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align="top" alt="" /><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">interface</span><span style="color: #000000"> ITestAdvice </span><span id="Codehighlighter1_29_94_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.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_29_94_Open_Text"><span style="color: #000000">{<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /> </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> doPlay();<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /> </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> doStop(Object reval);<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" alt="" />}</span></span><span style="color: #000000"><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" /><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" /><br /> <img id="Codehighlighter1_136_295_Open_Image" onclick="this.style.display='none'; Codehighlighter1_136_295_Open_Text.style.display='none'; Codehighlighter1_136_295_Closed_Image.style.display='inline'; Codehighlighter1_136_295_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_136_295_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_136_295_Closed_Text.style.display='none'; Codehighlighter1_136_295_Open_Image.style.display='inline'; Codehighlighter1_136_295_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align="top" alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000"> Tv </span><span style="color: #0000ff">implements</span><span style="color: #000000"> ITestAdvice</span><span id="Codehighlighter1_136_295_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.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_136_295_Open_Text"><span style="color: #000000">{<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /> <br /> <img id="Codehighlighter1_176_230_Open_Image" onclick="this.style.display='none'; Codehighlighter1_176_230_Open_Text.style.display='none'; Codehighlighter1_176_230_Closed_Image.style.display='inline'; Codehighlighter1_176_230_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_176_230_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_176_230_Closed_Text.style.display='none'; Codehighlighter1_176_230_Open_Image.style.display='inline'; Codehighlighter1_176_230_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" alt="" /> </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> doStop(Object reval) </span><span id="Codehighlighter1_176_230_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.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_176_230_Open_Text"><span style="color: #000000">{<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />  System.out.println(reval.toString() </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">关闭电视?</span><span style="color: #000000">"</span><span style="color: #000000">);<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" /> }</span></span><span style="color: #000000"><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /> <br /> <img id="Codehighlighter1_256_291_Open_Image" onclick="this.style.display='none'; Codehighlighter1_256_291_Open_Text.style.display='none'; Codehighlighter1_256_291_Closed_Image.style.display='inline'; Codehighlighter1_256_291_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_256_291_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_256_291_Closed_Text.style.display='none'; Codehighlighter1_256_291_Open_Image.style.display='inline'; Codehighlighter1_256_291_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" alt="" /> </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> doPlay() </span><span id="Codehighlighter1_256_291_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.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_256_291_Open_Text"><span style="color: #000000">{<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />  System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">打开电视?</span><span style="color: #000000">"</span><span style="color: #000000">);<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" /> }</span></span><span style="color: #000000"><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" alt="" />}</span></span><span style="color: #000000"><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" /><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" /></span></div> <p><span style="font-size: 10pt"><span style="font-family: 宋体"><span style="font-size: 12pt"><span style="font-size: 10pt"> </span></span></span></span></p> <p><span style="font-size: 10pt"><span style="font-family: 宋体"><span style="font-size: 12pt"><span style="font-size: 10pt">2.定义前置通知拦截处理c?/span></span></span></span></p> <p> </p> <div style="padding-right: 5px; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left-color: #cccccc; width: 98%; word-break: break-all; padding-top: 4px; background-color: #eeeeee; "><img id="Codehighlighter1_37_119_Open_Image" onclick="this.style.display='none'; Codehighlighter1_37_119_Open_Text.style.display='none'; Codehighlighter1_37_119_Closed_Image.style.display='inline'; Codehighlighter1_37_119_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_37_119_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_37_119_Closed_Text.style.display='none'; Codehighlighter1_37_119_Open_Image.style.display='inline'; Codehighlighter1_37_119_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align="top" alt="" /><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000"> TestMethodBeforeAdvice  </span><span id="Codehighlighter1_37_119_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.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_37_119_Open_Text"><span style="color: #000000">{<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /> <br /> <img id="Codehighlighter1_76_115_Open_Image" onclick="this.style.display='none'; Codehighlighter1_76_115_Open_Text.style.display='none'; Codehighlighter1_76_115_Closed_Image.style.display='inline'; Codehighlighter1_76_115_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_76_115_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_76_115_Closed_Text.style.display='none'; Codehighlighter1_76_115_Open_Image.style.display='inline'; Codehighlighter1_76_115_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" alt="" /> </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> before(JoinPoint jpt) </span><span id="Codehighlighter1_76_115_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.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_76_115_Open_Text"><span style="color: #000000">{  //参数JoinPoint为默认参?br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />  System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">正在打开电视..</span><span style="color: #000000">"</span><span style="color: #000000">);<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" /> }</span></span><span style="color: #000000"><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" alt="" />}</span></span><span style="color: #000000"><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" /></span></div> <p><br /> <br /> <span style="font-size: 10pt"><span style="font-family: 宋体"><span style="font-size: 12pt"><span style="font-size: 10pt">3.定义拦截器配|文?/span></span></span></span></p> <p><span style="font-size: 10pt"><span style="font-family: 宋体"><span style="font-size: 12pt"></span></span></span></p> <div style="padding-right: 5px; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left-color: #cccccc; width: 98%; word-break: break-all; padding-top: 4px; background-color: #eeeeee; "><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" /><span style="color: #000000"><</span><span style="color: #000000">bean id</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">tv</span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">com.pitey.demo.Tv</span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">/></span><span style="color: #000000"><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: #000000"><</span><span style="color: #000000">bean id</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">beforeAdvice</span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">com.pitey.demo.TestMethodBeforeAdvice</span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">/></span><span style="color: #000000"><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" /> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" /> </span><span style="color: #000000"><</span><span style="color: #000000">aop:aspectj</span><span style="color: #000000">-</span><span style="color: #000000">autoproxy proxy</span><span style="color: #000000">-</span><span style="color: #000000">target</span><span style="color: #000000">-</span><span style="color: #0000ff">class</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">true</span><span style="color: #000000">"</span><span style="color: #000000">/></span><span style="color: #000000"><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" /> </span><span style="color: #000000"><</span><span style="color: #000000">aop:config</span><span style="color: #000000">></span><span style="color: #000000"><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" />  </span><span style="color: #000000"><!--</span><span style="color: #000000"> 定义切入?#160;</span><span style="color: #000000">--></span><span style="color: #000000"><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" />  </span><span style="color: #000000"><</span><span style="color: #000000">aop:pointcut id</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">methodAdvice</span><span style="color: #000000">"</span><span style="color: #000000"> expression</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">execution(* com.pitey.demo.*.*(..))</span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">/></span><span style="color: #000000"><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" />  </span><span style="color: #000000"><!--</span><span style="color: #000000"> 定义切面 </span><span style="color: #000000">--></span><span style="color: #000000"><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" />  </span><span style="color: #000000"><</span><span style="color: #000000">aop:aspect id</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">beforeAdviceAspect</span><span style="color: #000000">"</span><span style="color: #000000"> ref</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">beforeAdvice</span><span style="color: #000000">"</span><span style="color: #000000">></span><span style="color: #000000"><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" />   </span><span style="color: #000000"><!--</span><span style="color: #000000"> 定义前置通知 </span><span style="color: #000000">--></span><span style="color: #000000">   <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" />   </span><span style="color: #000000"><</span><span style="color: #000000">aop:before method</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">before</span><span style="color: #000000">"</span><span style="color: #000000"> pointcut</span><span style="color: #000000">-</span><span style="color: #000000">ref</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">methodAdvice</span><span style="color: #000000">"</span><span style="color: #000000">/></span><span style="color: #000000">    <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" /> </span><span style="color: #000000"></</span><span style="color: #000000">aop:config</span><span style="color: #000000">></span><span style="color: #000000"><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" /><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" /></span></div> <p><br /> 4.试一下前|通知<br /> <span style="font-size: 10pt"><span style="font-family: 宋体"><span style="font-size: 12pt"></span></span></span></p> <div style="padding-right: 5px; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left-color: #cccccc; width: 98%; word-break: break-all; padding-top: 4px; background-color: #eeeeee; "><img id="Codehighlighter1_39_214_Open_Image" onclick="this.style.display='none'; Codehighlighter1_39_214_Open_Text.style.display='none'; Codehighlighter1_39_214_Closed_Image.style.display='inline'; Codehighlighter1_39_214_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_39_214_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_39_214_Closed_Text.style.display='none'; Codehighlighter1_39_214_Open_Image.style.display='inline'; Codehighlighter1_39_214_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align="top" alt="" /><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">static</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> main(String[] args) </span><span id="Codehighlighter1_39_214_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.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_39_214_Open_Text"><span style="color: #000000">{<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />        ApplicationContext context </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> ClassPathXmlApplicationContext(</span><span style="color: #000000">"</span><span style="color: #000000">config\\advice.xml</span><span style="color: #000000">"</span><span style="color: #000000">);<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />        Tv tv </span><span style="color: #000000">=</span><span style="color: #000000"> (Tv)context.getBean(</span><span style="color: #000000">"</span><span style="color: #000000">tv</span><span style="color: #000000">"</span><span style="color: #000000">);<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />        tv.doPlay();        <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" alt="" />    }</span></span><span style="color: #000000"><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" /><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" />l果:<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" />            正在打开电视?img src="http://www.aygfsteel.com/Images/dot.gif" alt="" />..<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" />            打开电视?br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" /><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" /></span></div> <p><br /> 5.定义q回后通知拦截处理c?/p> <p><span style="font-size: 10pt"><span style="font-family: 宋体"><span style="font-size: 12pt"></span></span></span></p> <div style="padding-right: 5px; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left-color: #cccccc; width: 98%; word-break: break-all; padding-top: 4px; background-color: #eeeeee; "><img id="Codehighlighter1_35_200_Open_Image" onclick="this.style.display='none'; Codehighlighter1_35_200_Open_Text.style.display='none'; Codehighlighter1_35_200_Closed_Image.style.display='inline'; Codehighlighter1_35_200_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_35_200_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_35_200_Closed_Text.style.display='none'; Codehighlighter1_35_200_Open_Image.style.display='inline'; Codehighlighter1_35_200_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align="top" alt="" /><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000"> TestAfterReturnAdvice </span><span id="Codehighlighter1_35_200_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.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_35_200_Open_Text"><span style="color: #000000">{<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /> <br /> <img id="Codehighlighter1_99_196_Open_Image" onclick="this.style.display='none'; Codehighlighter1_99_196_Open_Text.style.display='none'; Codehighlighter1_99_196_Closed_Image.style.display='inline'; Codehighlighter1_99_196_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_99_196_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_99_196_Closed_Text.style.display='none'; Codehighlighter1_99_196_Open_Image.style.display='inline'; Codehighlighter1_99_196_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" alt="" /> </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> afterReturning(Object retVal) </span><span style="color: #0000ff">throws</span><span style="color: #000000"> Throwable </span><span id="Codehighlighter1_99_196_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.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_99_196_Open_Text"><span style="color: #000000">{<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />  String returnVal </span><span style="color: #000000">=</span><span style="color: #000000"> 电视机已l打开</span><span style="color: #000000">!</span><span style="color: #000000">"</span><span style="color: #000000">;</span><span style="color: #000000"><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /></span><span style="color: #000000">  System.out.println(returnVal);<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />  retVal</span><span style="color: #000000">=</span><span style="color: #000000"> (Object)returnVal;<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" /> }</span></span><span style="color: #000000"><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" alt="" />}</span></span><span style="color: #000000"><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" /><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" /></span></div> <p><br /> 6.定义拦截器配|文?/p> <p><span style="font-size: 10pt"><span style="font-family: 宋体"><span style="font-size: 12pt"><span style="font-size: 10pt"> </span></span></span></span></p> <div style="padding-right: 5px; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left-color: #cccccc; width: 98%; word-break: break-all; padding-top: 4px; background-color: #eeeeee; "><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" /><span style="color: #000000"><</span><span style="color: #000000">bean id</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">afterReturnAdvice</span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">com.pitey.demo.TestAfterReturnAdvice</span><span style="color: #000000">"</span><span style="color: #000000">/></span><span style="color: #000000"><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" /> </span><span style="color: #000000"><</span><span style="color: #000000">aop:config</span><span style="color: #000000">></span><span style="color: #000000"><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" />  </span><span style="color: #000000"><!--</span><span style="color: #000000"> 定义切面 </span><span style="color: #000000">--></span><span style="color: #000000"><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" />  </span><span style="color: #000000"><</span><span style="color: #000000">aop:aspect id</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">afterReturnAdviceAspect</span><span style="color: #000000">"</span><span style="color: #000000"> ref</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">afterReturnAdvice</span><span style="color: #000000">"</span><span style="color: #000000">></span><span style="color: #000000"><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" />   </span><span style="color: #000000"><!--</span><span style="color: #000000"> 定义后置q回通知  </span><span style="color: #000000">--></span><span style="color: #000000">   <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" />   </span><span style="color: #000000"><</span><span style="color: #000000">aop:after</span><span style="color: #000000">-</span><span style="color: #000000">returning method</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">afterReturning</span><span style="color: #000000">"</span><span style="color: #000000"> pointcut</span><span style="color: #000000">-</span><span style="color: #000000">ref</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">methodAdvice</span><span style="color: #000000">"</span><span style="color: #000000"> returning</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">retVal</span><span style="color: #000000">"</span><span style="color: #000000">/></span><span style="color: #000000"> </span><span style="color: #008000">//</span><span style="color: #008000">returing 回参?/span><span style="color: #008000"><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: #000000"> </span><span style="color: #000000"></</span><span style="color: #000000">aop:config</span><span style="color: #000000">></span><span style="color: #000000"><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" /><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" /></span></div> <p><br /> 7.试一下返回后通知<br /> <span style="font-size: 10pt"><span style="font-family: 宋体"><span style="font-size: 12pt"><span style="font-size: 10pt"><br /> </span></span></span></span></p> <div style="padding-right: 5px; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left-color: #cccccc; width: 98%; word-break: break-all; padding-top: 4px; background-color: #eeeeee; "><img id="Codehighlighter1_39_214_Open_Image" onclick="this.style.display='none'; Codehighlighter1_39_214_Open_Text.style.display='none'; Codehighlighter1_39_214_Closed_Image.style.display='inline'; Codehighlighter1_39_214_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_39_214_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_39_214_Closed_Text.style.display='none'; Codehighlighter1_39_214_Open_Image.style.display='inline'; Codehighlighter1_39_214_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align="top" alt="" /><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">static</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> main(String[] args) </span><span id="Codehighlighter1_39_214_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.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_39_214_Open_Text"><span style="color: #000000">{<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />        ApplicationContext context </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> ClassPathXmlApplicationContext(</span><span style="color: #000000">"</span><span style="color: #000000">config\\advice.xml</span><span style="color: #000000">"</span><span style="color: #000000">);<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />        Tv tv </span><span style="color: #000000">=</span><span style="color: #000000"> (Tv)context.getBean(</span><span style="color: #000000">"</span><span style="color: #000000">tv</span><span style="color: #000000">"</span><span style="color: #000000">);<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />        tv.doPlay();        <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" alt="" />    }</span></span><span style="color: #000000"><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" /><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" />l果:<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" />            正在打开电视?img src="http://www.aygfsteel.com/Images/dot.gif" alt="" />..<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" />            打开电视?br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" />            电视机已l打开</span><span style="color: #000000">!</span><span style="color: #000000"><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" /><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" /></span></div> <p><br /> 8.定义环绕通知拦截处理c(环绕通知在一个方法执行之前和之后执行?它得通知有机会既在一个方法执行之前又在执行之后运行。ƈ且,它可以决定这个方法在什么时候执行,如何执行Q甚x否执行?环绕通知l常在在某线E安全的环境下,你需要在一个方法执行之前和之后׃n某种状态的时候用?请尽量用最单的满你需求的通知。(比如如果前置通知Qbefore adviceQ也可以适用的情况下不要使用环绕通知Q)<br /> 通知Ҏ的第一个参数的cd必须?<code class="interfacename">ProceedingJoinPoint</code> cd。在通知的主体中Q调?<code class="interfacename">ProceedingJoinPoint</code>?code class="literal">proceed()</code> Ҏ来执行真正的Ҏ?<code class="literal">proceed</code> Ҏ也可能会被调用ƈ且传入一?<code class="classname">Object[]</code> 对象 - 该数l将作ؓҎ执行时候的参数?/p> <p><span style="font-size: 10pt"><span style="font-family: 宋体"><span style="font-size: 12pt"></span></span></span></p> <div style="padding-right: 5px; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left-color: #cccccc; width: 98%; word-break: break-all; padding-top: 4px; background-color: #eeeeee; "><img id="Codehighlighter1_33_245_Open_Image" onclick="this.style.display='none'; Codehighlighter1_33_245_Open_Text.style.display='none'; Codehighlighter1_33_245_Closed_Image.style.display='inline'; Codehighlighter1_33_245_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_33_245_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_33_245_Closed_Text.style.display='none'; Codehighlighter1_33_245_Open_Image.style.display='inline'; Codehighlighter1_33_245_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align="top" alt="" /><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000"> TestMethodIntercepor</span><span id="Codehighlighter1_33_245_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.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_33_245_Open_Text"><span style="color: #000000">{<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /> <br /> <img id="Codehighlighter1_112_242_Open_Image" onclick="this.style.display='none'; Codehighlighter1_112_242_Open_Text.style.display='none'; Codehighlighter1_112_242_Closed_Image.style.display='inline'; Codehighlighter1_112_242_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_112_242_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_112_242_Closed_Text.style.display='none'; Codehighlighter1_112_242_Open_Image.style.display='inline'; Codehighlighter1_112_242_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" alt="" /> </span><span style="color: #0000ff">public</span><span style="color: #000000"> Object doBasicProfiling(ProceedingJoinPoint  pjp) </span><span style="color: #0000ff">throws</span><span style="color: #000000"> Throwable </span><span id="Codehighlighter1_112_242_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.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_112_242_Open_Text"><span style="color: #000000">{<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />  System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">begining<img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span style="color: #000000">"</span><span style="color: #000000">);<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />  Object obj </span><span style="color: #000000">=</span><span style="color: #000000"> pjp.proceed();<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />  <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />  System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">ending<img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" />..</span><span style="color: #000000">"</span><span style="color: #000000">);<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />  </span><span style="color: #0000ff">return</span><span style="color: #000000"> obj;<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" /> }</span></span><span style="color: #000000"> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" alt="" />}</span></span><span style="color: #000000"><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" /><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" /></span></div> <p><br /> <br /> 9.定义拦截器配|文?/p> <p><span style="font-size: 10pt"><span style="font-family: 宋体"><span style="font-size: 12pt"><span style="font-size: 10pt"> </span></span></span></span></p> <div style="padding-right: 5px; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left-color: #cccccc; width: 98%; word-break: break-all; padding-top: 4px; background-color: #eeeeee; "><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" /><span style="color: #000000"><</span><span style="color: #000000">bean id</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">aroundAdvice</span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">com.pitey.demo.TestMethodIntercepor</span><span style="color: #000000">"</span><span style="color: #000000">/></span><span style="color: #000000"><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" /> </span><span style="color: #000000"><</span><span style="color: #000000">aop:config</span><span style="color: #000000">></span><span style="color: #000000"><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" />  </span><span style="color: #000000"><!--</span><span style="color: #000000"> 定义切面 </span><span style="color: #000000">--></span><span style="color: #000000"><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" />  </span><span style="color: #000000"><</span><span style="color: #000000">aop:aspect id</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">aroundAspect</span><span style="color: #000000">"</span><span style="color: #000000"> ref</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">aroundAdvice</span><span style="color: #000000">"</span><span style="color: #000000">></span><span style="color: #000000"><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" /> </span><span style="color: #000000"><</span><span style="color: #000000">aop:around method</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">doBasicProfiling</span><span style="color: #000000">"</span><span style="color: #000000"> pointcut</span><span style="color: #000000">-</span><span style="color: #000000">ref</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">methodBeforeAdvice</span><span style="color: #000000">"</span><span style="color: #000000">/></span><span style="color: #000000"><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" />  </span><span style="color: #000000"></</span><span style="color: #000000">aop:aspect</span><span style="color: #000000">></span><span style="color: #000000"><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" /> </span><span style="color: #000000"></</span><span style="color: #000000">aop:config</span><span style="color: #000000">></span><span style="color: #000000"><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" /><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" /></span></div> <p><br /> <br /> 10.试一下环l通知<br /> </p> <div style="padding-right: 5px; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left-color: #cccccc; width: 98%; word-break: break-all; padding-top: 4px; background-color: #eeeeee; "><img id="Codehighlighter1_39_214_Open_Image" onclick="this.style.display='none'; Codehighlighter1_39_214_Open_Text.style.display='none'; Codehighlighter1_39_214_Closed_Image.style.display='inline'; Codehighlighter1_39_214_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_39_214_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_39_214_Closed_Text.style.display='none'; Codehighlighter1_39_214_Open_Image.style.display='inline'; Codehighlighter1_39_214_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align="top" alt="" /><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">static</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> main(String[] args) </span><span id="Codehighlighter1_39_214_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.aygfsteel.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_39_214_Open_Text"><span style="color: #000000">{<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />        ApplicationContext context </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> ClassPathXmlApplicationContext(</span><span style="color: #000000">"</span><span style="color: #000000">config\\advice.xml</span><span style="color: #000000">"</span><span style="color: #000000">);<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />        Tv tv </span><span style="color: #000000">=</span><span style="color: #000000"> (Tv)context.getBean(</span><span style="color: #000000">"</span><span style="color: #000000">tv</span><span style="color: #000000">"</span><span style="color: #000000">);<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />        tv.doPlay();        <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" alt="" />    }</span></span><span style="color: #000000"><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" /><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" />l果:<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" />            begining<img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /><br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" />            打开电视?br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" />            ending<img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" />..<br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" alt="" /></span></div> <img src ="http://www.aygfsteel.com/pitey/aggbug/254143.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/pitey/" target="_blank">Pitey</a> 2009-02-10 23:07 <a href="http://www.aygfsteel.com/pitey/archive/2009/02/10/254143.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring 获取Connectionhttp://www.aygfsteel.com/pitey/archive/2008/03/05/183932.htmlPiteyPiteyWed, 05 Mar 2008 04:45:00 GMThttp://www.aygfsteel.com/pitey/archive/2008/03/05/183932.htmlhttp://www.aygfsteel.com/pitey/comments/183932.htmlhttp://www.aygfsteel.com/pitey/archive/2008/03/05/183932.html#Feedback0http://www.aygfsteel.com/pitey/comments/commentRss/183932.htmlhttp://www.aygfsteel.com/pitey/services/trackbacks/183932.htmlapplicationContext.xml里面讄

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean" lazy-init="default" autowire="default" dependency-check="default">
        <property name="jndiName">
            <value>JDBC/TEST</value>           
        </property>
</bean> 或?br />
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property>
        <property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:ora"></property>
        <property name="username" value="test"></property>
        <property name="password" value="123456"></property>
    </bean>


通过
DataSourceUtils.getConnection(DataSourceQ?p获取到设|的DataSource 然后获得connection

public static Connection getConnection()
            
throws SQLException
    {        
        
return DataSourceUtils.getConnection((DataSource)ServiceLocator.getBean("dataSource"));
}



Pitey 2008-03-05 12:45 发表评论
]]>
վ֩ģ壺 | | ͭ| ɾ| | ˮ| | ˮ| | | | | | | | | | | ̨| | ̩˳| ɳ| | ɽ| | ƺ| | »| ΢| Ϫ| | ij| | ͡| | | | | ³ľ| ˮ| ݶ|