快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

新蒲京澳门赌场网站:WEB开发中Spring AOP实际应用一例



在WEB开拓中,用户对网页的造访权限反省是一个紧张的环节。以STRUST为例,我们必要在Action的exc新蒲京澳门赌场网站ute措施中编写相关的代码(一样平常是调用基类的函数),也很显然,在每个Action中这是一种重复劳动。

假如我们在excute运行之前,能够自动去调用基类的权限反省函数,这无疑是个好的办理法子。AOP就为我们供给了这样一种办理措施。

下面以一个简化的实例先容实现的法子。

首先我们做一个接口:

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.println("Check Pass!!");

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.c新蒲京澳门赌场网站lass);

public void before(Method m, Object[] args, Object target) throws Thro新蒲京澳门赌场网站wable {

if (target instanceof CheckInterface){

logger.debug("Is Instanceof CheckInterface!!!");

CheckInterface ci=(CheckInterface)target;

ci.check((String)args[0]);

}

}

}

此中紧张的before措施的参数:Object target传入的看护的工具(即测试类的接口),Method m, Object[] args分手是该工具被调用的措施和参数。我们再来作spring bean定义xml文件:

Spring Quick Start

.*excute.*

com.wysm.netstar.test.springaop.CheckInterface

myPointcutAdvisor2

这个定义文件指清楚明了ExcuteClass为监视工具,它的excute措施被履行的时刻,BeforeAdvisor将被调用。

着末是测试类:

import junit.framework.TestCase;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.FileSystemXmlApplicationContext;

public class SpringTestCase2 extends TestCase {

CheckInterface test=null;

protected void setUp() throws Exception {

super.setUp();

ApplicationContext ctx=new FileSystemXmlApplicationC新蒲京澳门赌场网站ontext("src新蒲京澳门赌场网站/com/wysm/netstar/test/springaop/aoptest.xml");

test = (CheckInterface) ctx.getBean("myCheckClass");

}

protected void tearDown() throws Exception {

super.tearDown();

}

public void testExcute(){

test.excute("supervisor");

}

}

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

您可能还会对下面的文章感兴趣: