日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

如何在Spring中使用AOP_JSP教程

編輯Tag賺U幣
教程Tag:暫無(wú)Tag,歡迎添加,賺取U幣!

推薦:JSP教程之整合hibernate持久層3
jsp 網(wǎng)頁(yè)制作 spring整合Hibernate---- 3 問(wèn)題和解決 補(bǔ)充2 現(xiàn)象: UserAction中修改: //UserDAOdao=(UserDAO)wac.getBean(userDAO); UserDAOdao=(UserDAO)wac.getBean(userDAOProxy);//@1 配置文件中增加: beanid=userDAOProxyclass=org.springframew

AOP正在成為軟件開(kāi)發(fā)的下一個(gè)圣杯。使用AOP,你可以將處理aspect的代碼注入主程序,通常主程序的主要目的并不在于處理這些aspect。AOP可以防止代碼混亂。 
為了理解AOP如何做到這點(diǎn),考慮一下記日志的工作。日志本身不太可能是你開(kāi)發(fā)的主程序的主要任務(wù)。如果能將“不可見(jiàn)的”、通用的日志代碼注入主程序中,那該多好啊。AOP可以幫助你做到。 
Spring framework是很有前途的AOP技術(shù)。作為一種非侵略性的,輕型的AOP framework,你無(wú)需使用預(yù)編譯器或其他的元標(biāo)簽,便可以在Java程序中使用它。這意味著開(kāi)發(fā)團(tuán)隊(duì)里只需一人要對(duì)付AOP framework,其他人還是象往常一樣編程。 
AOP是很多直覺(jué)難以理解的術(shù)語(yǔ)的根源。幸運(yùn)的是,你只要理解三個(gè)概念,就可以編寫AOP模塊。這三個(gè)概念是:advice,pointcut和advisor。advice是你想向別的程序內(nèi)部不同的地方注入的代碼。pointcut定義了需要注入advice的位置,通常是某個(gè)特定的類的一個(gè)public方法。advisor是pointcut和advice的裝配器,是將advice注入主程序中預(yù)定義位置的代碼。 

既然我們知道了需要使用advisor向主要代碼中注入“不可見(jiàn)的”advice,讓我們實(shí)現(xiàn)一個(gè)Spring AOP的例子。在這個(gè)例子中,我們將實(shí)現(xiàn)一個(gè)before advice,這意味著advice的代碼在被調(diào)用的public方法開(kāi)始前被執(zhí)行。以下是這個(gè)before advice的實(shí)現(xiàn)代碼: 

代碼: 
package com.company.springaop.test; 

import java.lang.reflect.Method; 
import org.springframework.aop.MethodBeforeAdvice; 

public class TestBeforeAdvice implements MethodBeforeAdvice { 

  public void before(Method m, Object[] args, Object target) 
  throws Throwable { 
    System.out.println("Hello world! (by " 
        + this.getClass().getName() 
        + ")"); 
  } 
}  
  
接口MethodBeforeAdvice只有一個(gè)方法before需要實(shí)現(xiàn),它定義了advice的實(shí)現(xiàn)。before方法共用三個(gè)參數(shù),它們提供了相當(dāng)豐富的信息。參數(shù)Method m是advice開(kāi)始后執(zhí)行的方法。方法名稱可以用作判斷是否執(zhí)行代碼的條件。Object[] args是傳給被調(diào)用的public方法的參數(shù)數(shù)組。當(dāng)需要記日志時(shí),參數(shù)args和被執(zhí)行方法的名稱,都是非常有用的信息。你也可以改變傳給m的參數(shù),但要小心使用這個(gè)功能;編寫最初主程序的程序員并不知道主程序可能會(huì)和傳入?yún)?shù)的發(fā)生沖突。Object target是執(zhí)行方法m對(duì)象的引用。 

在下面的BeanImpl類中,每個(gè)public方法調(diào)用前,都會(huì)執(zhí)行advice: 

代碼: 
package com.company.springaop.test; 

public class BeanImpl implements Bean { 

  public void theMethod() { 
    System.out.println(this.getClass().getName() 
        + "." + new Exception().getStackTrace()[0].getMethodName() 
        + "()" 
        + " says HELLO!"); 
  } 


類BeanImpl實(shí)現(xiàn)了下面的接口Bean: 

代碼: 
package com.company.springaop.test; 

public interface Bean { 
  public void theMethod(); 


雖然不是必須使用接口,但面向接口而不是面向?qū)崿F(xiàn)編程是良好的編程實(shí)踐,Spring也鼓勵(lì)這樣做。 
pointcut和advice通過(guò)配置文件來(lái)實(shí)現(xiàn),因此,接下來(lái)你只需編寫主方法的Java代碼: 
代碼: 
package com.company.springaop.test; 

import org.springframework.context.ApplicationContext; 
import org.springframework.context.support.FileSystemXmlApplicationContext; 

public class Main { 

  public static void main(String[] args) { 
    //Read the configuration file 
    ApplicationContext ctx 
        = new FileSystemXmlApplicationContext("springconfig.xml"); 

    //Instantiate an object 
    Bean x = (Bean) ctx.getBean("bean"); 

    //Execute the public method of the bean (the test) 
    x.theMethod(); 
  } 

分享:JSP教程之整合hibernate持久層2
使用Hibernate持久層---2出現(xiàn)的問(wèn)題與解決方法總結(jié) 現(xiàn)象1: org.springframework.beans.factory.BeanCreationException:Errorcreatingbeanwithname’org.springframework.aop.support.DefaultPointcutAdvisor’definedinnull:Can’tresolvereferencetobean’

共2頁(yè)上一頁(yè)12下一頁(yè)
來(lái)源:模板無(wú)憂//所屬分類:JSP教程/更新時(shí)間:2010-03-05
相關(guān)JSP教程