通过动态代理模拟Spring AOP(二)

2014-11-24 08:41:37 · 作者: · 浏览: 1
FunListener","com.bestaone.aop.LogListener"};
UserService userService = (UserService) AOPFactory.getAOPProxyedObject("com.bestaone.UserServiceImpl",listenerName);
userService.save("张三被保存!注:由于线程的关系,打印的顺序不是我们想要的,但这不影响演示AOP");
}

}

FunListener.java 模拟权限监听器

[java]
package com.bestaone.aop;

import java.lang.reflect.Method;

/**
* 模拟权限监听器
* @author 张国圣
*/
public class FunListener implements Listener{

@Override
public void before(Object proxy, Method method, Object[] args){
System.err.println(method.getName() + "方法运行之前检查权限!");
}

@Override
public void after(Object proxy, Method method, Object[] args){
System.err.println(method.getName() + "方法运行之后检查权限!");
}

}

Listener.java 监听器接口

[java]
package com.bestaone.aop;

import java.lang.reflect.Method;

/**
* 监听器接口
* @author 张国圣
*/
public interface Listener{

public void before(Object proxy, Method method, Object[] args);

public void after(Object proxy, Method method, Object[] args);

}

LogListener.java 模拟日志监听器

[java]
package com.bestaone.aop;

import java.lang.reflect.Method;

/**
* 模拟日志监听器
* @author 张国圣
*/
public class LogListener implements Listener{

@Override
public void before(Object proxy, Method method, Object[] args){
System.err.println(method.getName() + "方法运行之前打印日志!");
}

@Override
public void after(Object proxy, Method method, Object[] args){
System.err.println(method.getName() + "方法运行之后打印日志!");
}

}
作者:bestaone