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