如何在Spring中使用AOP(2)_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
我們從讀入和處理配置文件開(kāi)始,接下來(lái)馬上要?jiǎng)?chuàng)建它。這個(gè)配置文件將作為粘合程序不同部分的“膠水”。讀入和處理配置文件后,我們會(huì)得到一個(gè)創(chuàng)建工廠ctx。任何一個(gè)Spring管理的對(duì)象都必須通過(guò)這個(gè)工廠來(lái)創(chuàng)建。對(duì)象通過(guò)工廠創(chuàng)建后便可正常使用。
僅僅用配置文件便可把程序的每一部分組裝起來(lái)。
代碼:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!--CONFIG-->
<bean id="bean" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces">
<value>com.company.springaop.test.Bean</value>
</property>
<property name="target">
<ref local="beanTarget"/>
</property>
<property name="interceptorNames">
<list>
<value>theAdvisor</value>
</list>
</property>
</bean>
<!--CLASS-->
<bean id="beanTarget" class="com.company.springaop.test.BeanImpl"/>
<!--ADVISOR-->
<!--Note: An advisor assembles pointcut and advice-->
<bean id="theAdvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
<property name="advice">
<ref local="theBeforeAdvice"/>
</property>
<property name="pattern">
<value>com\.company\.springaop\.test\.Bean\.theMethod</value>
</property>
</bean>
<!--ADVICE-->
<bean id="theBeforeAdvice" class="com.company.springaop.test.TestBeforeAdvice"/>
</beans>
四個(gè)bean定義的次序并不重要。我們現(xiàn)在有了一個(gè)advice,一個(gè)包含了正則表達(dá)式pointcut的advisor,一個(gè)主程序類(lèi)和一個(gè)配置好的接口,通過(guò)工廠ctx,這個(gè)接口返回自己本身實(shí)現(xiàn)的一個(gè)引用。
BeanImpl和TestBeforeAdvice都是直接配置。我們用一個(gè)唯一的ID創(chuàng)建一個(gè)bean元素,并指定了一個(gè)實(shí)現(xiàn)類(lèi)。這就是全部的工作。
advisor通過(guò)Spring framework提供的一個(gè)RegexMethodPointcutAdvisor類(lèi)來(lái)實(shí)現(xiàn)。我們用advisor的一個(gè)屬性來(lái)指定它所需的advice-bean。第二個(gè)屬性則用正則表達(dá)式定義了pointcut,確保良好的性能和易讀性。
最后配置的是bean,它可以通過(guò)一個(gè)工廠來(lái)創(chuàng)建。bean的定義看起來(lái)比實(shí)際上要復(fù)雜。bean是ProxyFactoryBean的一個(gè)實(shí)現(xiàn),它是Spring framework的一部分。這個(gè)bean的行為通過(guò)一下的三個(gè)屬性來(lái)定義:
屬性proxyInterface定義了接口類(lèi)。
屬性target指向本地配置的一個(gè)bean,這個(gè)bean返回一個(gè)接口的實(shí)現(xiàn)。
屬性interceptorNames是唯一允許定義一個(gè)值列表的屬性。這個(gè)列表包含所有需要在beanTarget上執(zhí)行的advisor。注意,advisor列表的次序是非常重要的。
Spring工具
雖然你可以手工修改Ant構(gòu)建腳本,但使用SpringUI(譯注:SpringUI現(xiàn)在是Spring framework的一部分,并改名為spring-ide),使用Spring AOP變得很簡(jiǎn)單,只要點(diǎn)點(diǎn)鼠標(biāo)即可。你可以把SpringUI安裝成Eclipse的一個(gè)plug-in。然后,你只需在你的project上右擊鼠標(biāo),并選擇“add Spring Project Nature”。在project屬性中,你可以在“Spring Project”下添加Spring配置文件。在編譯前把下面的類(lèi)庫(kù)加入project:aopalliance.jar,commons-logging.jar,jakarta-oro-2.0.7.jar和spring.jar。運(yùn)行程序時(shí)你會(huì)看到下面的信息:
... (logging information)
Hello world! (by com.company.springaop.test.TestBeforeAdvice)
com.company.springaop.test.BeanImpl.theMethod() says HELLO!
優(yōu)點(diǎn)和缺點(diǎn)
Spring比起其他的framework更有優(yōu)勢(shì),因?yàn)槌薃OP以外,它提供了更多別的功能。作為一個(gè)輕型framework,它在J2EE不同的部分都可以發(fā)揮作用。因此,即使不想使用Spring AOP,你可能還是想使用Spring。另一個(gè)優(yōu)點(diǎn)是,Spring并不要求開(kāi)發(fā)團(tuán)隊(duì)所有的人員都會(huì)用它。學(xué)習(xí)Spring應(yīng)該從Spring reference的第一頁(yè)開(kāi)始。讀了本文后,你應(yīng)該可以更好地理解Spring reference了。Spring唯一的缺點(diǎn)是缺乏更多的文檔,但它的mailing list是個(gè)很好的補(bǔ)充,而且會(huì)不斷地出現(xiàn)更多的文檔。
分享: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ī)鍵盤(pán)使用注意問(wèn)題
- J2EE基礎(chǔ)--為什么jsp不能取代servlet
- J2EE程序中的SQL語(yǔ)句自動(dòng)構(gòu)造方法講解
- 相關(guān)鏈接:
- 教程說(shuō)明:
JSP教程-如何在Spring中使用AOP(2)
。