动态代理模式

动态代理:

  动态代理对比静态代理,它可以自动生产代理对象和方法,就可以解决因为对象或者方法过多而浪费资源

//接口

public interface IUserService {
public abstract void add(User user);
public abstract int delete(int id);
}

//实现接口的类
public class UserService implements IUserService {
@Override
public void add(User user) {
System.out.println("执行了添加方法");
}

@Override
public int delete(int id) {
System.out.println("执行了删除方法");
return 0;
}
}


//动态代理写在test方法中
public class Test {
public static void main(String[] args) {
IUserService us = (IUserService) Proxy.newProxyInstance(
UserService.class.getClassLoader(),
UserService.class.getInterfaces(),
new InvocationHandler() {
@Override//代理对象----方法----参数
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println(method+"---method");
Object invoke = method.invoke(new UserService(), args);
System.out.println(args);
return invoke;
}
}
);
us.add(new User());
us.delete(9);
}
}
动态代理在代理时,先调用UserService的方法就先代理,这样就可以避免自己手动创建代理对象和方法。

动态代理模式

 



上一篇:2021-11-21_学习B站Spring Boot+vue项目step005


下一篇:Spring框架的环境搭建