如何在Spring中使用AOP_JSP教程
教程Tag:暫無(wú)Tag,歡迎添加,賺取U幣!
推薦:JSP教程之整合hibernate持久層3jsp 網(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’
相關(guān)JSP教程:
- jsp response.sendRedirect不跳轉(zhuǎn)的原因分析及解決
- JSP指令元素(page指令/include指令/taglib指令)復(fù)習(xí)整理
- JSP腳本元素和注釋復(fù)習(xí)總結(jié)示例
- JSP FusionCharts Free顯示圖表 具體實(shí)現(xiàn)
- 網(wǎng)頁(yè)模板:關(guān)于jsp頁(yè)面使用jstl的異常分析
- JSP頁(yè)面中文傳遞參數(shù)使用escape編碼
- 基于jsp:included的使用與jsp:param亂碼的解決方法
- Java Web項(xiàng)目中連接Access數(shù)據(jù)庫(kù)的配置方法
- JDBC連接Access數(shù)據(jù)庫(kù)的幾種方式介紹
- 網(wǎng)站圖片路徑的問(wèn)題:絕對(duì)路徑/虛擬路徑
- (jsp/html)網(wǎng)頁(yè)上嵌入播放器(常用播放器代碼整理)
- jsp下顯示中文文件名及絕對(duì)路徑下的圖片解決方法
JSP教程Rss訂閱編程教程搜索
JSP教程推薦
- JSP與Servlet的介紹說(shuō)明
- 解析用spring發(fā)郵件驗(yàn)證失敗問(wèn)題
- jsp簡(jiǎn)單自定義標(biāo)簽的forEach遍歷及轉(zhuǎn)義字符
- 檢測(cè)輸入的字符是否為0-9的數(shù)字(測(cè)試)
- 解決JSP開(kāi)發(fā)Web程序中文顯示的三種方法
- JSP將動(dòng)態(tài)頁(yè)面轉(zhuǎn)換為靜態(tài)頁(yè)面
- JSP腳本元素和注釋復(fù)習(xí)總結(jié)示例
- J2ME開(kāi)發(fā)之手機(jī)鍵盤使用注意問(wèn)題
- J2EE基礎(chǔ)--為什么jsp不能取代servlet
- J2EE程序中的SQL語(yǔ)句自動(dòng)構(gòu)造方法講解
- 相關(guān)鏈接:
- 教程說(shuō)明:
JSP教程-如何在Spring中使用AOP
。