麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發(fā)設計 > 正文

WEB開發(fā)中SpringAOP實際應用一例

2019-11-18 13:47:20
字體:
來源:轉載
供稿:網(wǎng)友
   在WEB開發(fā)中,用戶對網(wǎng)頁的訪問權限檢查是一個重要的環(huán)節(jié)。以STRUST為例,我們需要在Action的excute方法中編寫相關的代碼(一般是調(diào)用基類的函數(shù)),也很顯然,在每個Action中這是一種重復勞動。
假如我們在excute運行之前,能夠自動去調(diào)用基類的權限檢查函數(shù),這無疑是個好的解決辦法。AOP就為我們提供了這樣一種解決方法。

  下面以一個簡化的實例介紹實現(xiàn)的辦法。

  首先我們做一個接口:

public interface CheckInterface {
  public abstract void check(String name);
  public abstract void excute(String name);
}



  再做一個基類:

public abstract class BaseClass implements CheckInterface {
public BaseClass() {
}
public void check(String name){
if (name.equals("supervisor"))
System.out.else {
System.out.println("No
access privilege! Please do sth. else!");
}
}
}

  再做一個測試類:

public class ExcuteClass extends BaseClass {
public ExcuteClass() {
}

public void excute(String name){
System.out.println("Excute here!"+name);
}
}



  好了,下面做一個通知類(Advice):

import org.springframework.aop.MethodBeforeAdvice;
import java.lang.reflect.Method;
import org.apache.log4j.Logger;


public class BeforeAdvisor implements MethodBeforeAdvice {
private static Logger logger=Logger.getLogger(BeforeAdvisor.class);
public void before(Method m, Object[] args, Object target) throws Throwable {
if (target instanceof CheckInterface){
logger.debug("Is Instanceof CheckInterface!!!");
CheckInterface ci=(CheckInterface)target;
ci.check((String)args[0]);
}
}
}

  其中重要的before方法的參數(shù):Object target傳入的通知的對象(即測試類的接口),Method m, Object[] args分別是該對象被調(diào)用的方法和參數(shù)。我們再來作spring bean定義xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<description>Spring Quick Start</description>
<bean id="MyAdvisor" class="com.wysm.netstar.test.springaop.BeforeAdvisor"/>

<bean id="myPointcutAdvisor2" class="org.springframework.aop.support.RegeXPMethodPointcutAdvisor">
<property name="advice">
<ref local="MyAdvisor" />
</property>
<property name="patterns">
<list>
<value>.*excute.*</value>
</list>
</property>
</bean>

<bean id="checkInterface" class="com.wysm.netstar.test.springaop.ExcuteClass"/>

<bean id="myCheckClass" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces">
<value>com.wysm.netstar.test.springaop.CheckInterface</value>
</property>
<property name="target">
<ref local="checkInterface" />
</property>
<property name="interceptorNames">
<value>myPointcutAdvisor2</value>
</property>
</bean>

</beans>

  這個定義文件指明了ExcuteClass為監(jiān)視對象,它的excute方法被執(zhí)行的時候,BeforeAdvisor將被調(diào)用。




上一篇:SpringAOP之HelloWorld

下一篇:SpringReference

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 欧美在线a | 日韩视频一区二区三区在线观看 | chengrenzaixian| 亚洲午夜在线视频 | 欧洲伊人网 | 空姐一级毛片 | 国产一精品久久99无吗一高潮 | 最近中文字幕一区二区 | 中国成人在线视频 | 日本最新免费二区三区 | 亚洲一区二区观看播放 | 越南一级黄色片 | 91av久久 | 国产精品99久久久久久久 | 91丝袜| 91精品国产92久久久久 | 91丨九色丨国产在线观看 | 国产精品视频二区不卡 | 日韩美女电影 | 免费视频www在线观看 | 麻豆小视频在线观看 | 看一级毛片 | 久久精品毛片 | 国产黄色免费网站 | 亚洲国产精品一区二区久久 | 男女污视频在线观看 | 12av毛片| 福利在线小视频 | 亚洲国产精品久久久久久久久久久 | 男女羞羞的视频 | 91成人免费在线观看 | 日本不卡一区二区三区在线 | 午夜久久久精品一区二区三区 | 宅男视频在线观看免费 | 精品国产精品久久 | 99ri在线| 成人在线观看一区二区 | 精品国产一区二区三区在线观看 | 成人在线不卡 | 久久精品国产99久久久古代 | 国产高潮好爽好大受不了了 |