1、代理的含义:
需求:原来的sevice功能已经确定了。产品希望给每个service 统一加点功能上去,比如打印日志。
2、静态代理:
直接写死,变动不方便
3、动态代理jdk方式
jdk方式:java自带的,通过反射实现,应用非常广泛。
使用要求:代理目标对象必须基于接口
一开始的项目中有UserService ,和他的实现类UserServiceImpl ,为了附加功能我们创建一个LogHandler,这个LogHandler持有
UserServiceImpl。
public interface UserService {
public void select();
public void update();
}
public class UserServiceImpl implements UserService {
public void select() {
System.out.println("查询 selectById");
}
public void update() {
System.out.println("更新 update");
}
}
新建的LogHandler:是给UserServiceImpl 提供额外功能的类,比如打印日志。
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Met