==============
方法前置增强器
==============
动态代理开发的四个步骤:
- 原始类:public class UserServiceImpl implements UserService { ... }
- 增强类:public class Before implements MethodBeforeAdvice { ... } <=
- 切入点:
- 配增强:
public class 方法前置增强器 implements MethodBeforeAdvice {
原始方法 传递给原始方法的参数
@Override | |
public void before(Method method, Object[] objects, Object o) throws Throwable {
在原始方法之前执行 |
} 原始对象
}
/src/main/java/cn/tedu/proxy/Before.java:
public class Before implements MethodBeforeAdvice {
private Logger logger = Logger.getLogger(Before.class);
@Override
public void before(Method method, Object[] objects, Object o) throws Throwable {
logger.debug(">>>> BEFORE >>>>");
logger.debug(method);
for (Object object : objects)
logger.debug(object);
logger.debug(o);
logger.debug(">>>>>>>>>>>>>>>>");
}
}
>>>> BEFORE >>>>
public abstract void cn.tedu.proxy.UserService.register(cn.tedu.proxy.User)
User{username='zhangfei', password='123456'}
cn.tedu.proxy.UserServiceImpl@50de186c
>>>>>>>>>>>>>>>>
UserServiceImpl.register
>>>> BEFORE >>>>
public abstract cn.tedu.proxy.User cn.tedu.proxy.UserService.login(java.lang.String,java.lang.String)
zhangfei
123456
cn.tedu.proxy.UserServiceImpl@50de186c
>>>>>>>>>>>>>>>>
UserServiceImpl.login
>>>> BEFORE >>>>
public abstract void cn.tedu.proxy.OrderService.show(int)
1
cn.tedu.proxy.OrderServiceImpl@4f0100a7
>>>>>>>>>>>>>>>>
OrderServiceImpl.show
例程:Proxy
before方法的三个参数未必都有用,根据需要选择。