如何在Spring中使用AOP(2)_JSP教程
教程Tag:暫無Tag,歡迎添加,賺取U幣!
推薦:JSP教程之整合hibernate持久層3jsp 網頁制作 spring整合Hibernate---- 3 問題和解決 補充2 現(xiàn)象: UserAction中修改: //UserDAOdao=(UserDAO)wac.getBean(userDAO); UserDAOdao=(UserDAO)wac.getBean(userDAOProxy);//@1 配置文件中增加: beanid=userDAOProxyclass=org.springframew
我們從讀入和處理配置文件開始,接下來馬上要創(chuàng)建它。這個配置文件將作為粘合程序不同部分的“膠水”。讀入和處理配置文件后,我們會得到一個創(chuàng)建工廠ctx。任何一個Spring管理的對象都必須通過這個工廠來創(chuàng)建。對象通過工廠創(chuàng)建后便可正常使用。
僅僅用配置文件便可把程序的每一部分組裝起來。
代碼:
<?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>
四個bean定義的次序并不重要。我們現(xiàn)在有了一個advice,一個包含了正則表達式pointcut的advisor,一個主程序類和一個配置好的接口,通過工廠ctx,這個接口返回自己本身實現(xiàn)的一個引用。
BeanImpl和TestBeforeAdvice都是直接配置。我們用一個唯一的ID創(chuàng)建一個bean元素,并指定了一個實現(xiàn)類。這就是全部的工作。
advisor通過Spring framework提供的一個RegexMethodPointcutAdvisor類來實現(xiàn)。我們用advisor的一個屬性來指定它所需的advice-bean。第二個屬性則用正則表達式定義了pointcut,確保良好的性能和易讀性。
最后配置的是bean,它可以通過一個工廠來創(chuàng)建。bean的定義看起來比實際上要復雜。bean是ProxyFactoryBean的一個實現(xiàn),它是Spring framework的一部分。這個bean的行為通過一下的三個屬性來定義:
屬性proxyInterface定義了接口類。
屬性target指向本地配置的一個bean,這個bean返回一個接口的實現(xiàn)。
屬性interceptorNames是唯一允許定義一個值列表的屬性。這個列表包含所有需要在beanTarget上執(zhí)行的advisor。注意,advisor列表的次序是非常重要的。
Spring工具
雖然你可以手工修改Ant構建腳本,但使用SpringUI(譯注:SpringUI現(xiàn)在是Spring framework的一部分,并改名為spring-ide),使用Spring AOP變得很簡單,只要點點鼠標即可。你可以把SpringUI安裝成Eclipse的一個plug-in。然后,你只需在你的project上右擊鼠標,并選擇“add Spring Project Nature”。在project屬性中,你可以在“Spring Project”下添加Spring配置文件。在編譯前把下面的類庫加入project:aopalliance.jar,commons-logging.jar,jakarta-oro-2.0.7.jar和spring.jar。運行程序時你會看到下面的信息:
... (logging information)
Hello world! (by com.company.springaop.test.TestBeforeAdvice)
com.company.springaop.test.BeanImpl.theMethod() says HELLO!
優(yōu)點和缺點
Spring比起其他的framework更有優(yōu)勢,因為除了AOP以外,它提供了更多別的功能。作為一個輕型framework,它在J2EE不同的部分都可以發(fā)揮作用。因此,即使不想使用Spring AOP,你可能還是想使用Spring。另一個優(yōu)點是,Spring并不要求開發(fā)團隊所有的人員都會用它。學習Spring應該從Spring reference的第一頁開始。讀了本文后,你應該可以更好地理解Spring reference了。Spring唯一的缺點是缺乏更多的文檔,但它的mailing list是個很好的補充,而且會不斷地出現(xiàn)更多的文檔。
分享:JSP教程之整合hibernate持久層2使用Hibernate持久層---2出現(xiàn)的問題與解決方法總結 現(xiàn)象1: org.springframework.beans.factory.BeanCreationException:Errorcreatingbeanwithname’org.springframework.aop.support.DefaultPointcutAdvisor’definedinnull:Can’tresolvereferencetobean’
相關JSP教程:
- jsp response.sendRedirect不跳轉的原因分析及解決
- JSP指令元素(page指令/include指令/taglib指令)復習整理
- JSP腳本元素和注釋復習總結示例
- JSP FusionCharts Free顯示圖表 具體實現(xiàn)
- 網頁模板:關于jsp頁面使用jstl的異常分析
- JSP頁面中文傳遞參數(shù)使用escape編碼
- 基于jsp:included的使用與jsp:param亂碼的解決方法
- Java Web項目中連接Access數(shù)據庫的配置方法
- JDBC連接Access數(shù)據庫的幾種方式介紹
- 網站圖片路徑的問題:絕對路徑/虛擬路徑
- (jsp/html)網頁上嵌入播放器(常用播放器代碼整理)
- jsp下顯示中文文件名及絕對路徑下的圖片解決方法
- 相關鏈接:
- 教程說明:
JSP教程-如何在Spring中使用AOP(2)。