动态代理是指:在程序运行期间根据需要动态创建代理类及其实例来完成具体的功能。
动态代理主要分为JDK动态代理和cglib动态代理两大类
以下jdk动态代理
1.创建代理接口
public interface HelloService {
void hell(String name);
}
2.创建实现类
@Service
public class HelloServiceImpl implements HelloService {
@Override
public void hell(String name) {
System.out.println("hello " +name);
}
}
3.创建代理类 实现 java.lang.reflect.InvocationHandler接口
public class HelloProxy implements InvocationHandler {
private Object target;
public HelloProxy(Object target) {
this.target = target;
}
public <T> T getProxy(){
return (T) Proxy.newProxyInstance(this.getClass().getClassLoader(),target.getClass().getInterfaces(),this);
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("todo biz 1...");
Object result= method.invoke(target,args);
System.out.println("todo biz 2...");
return result;
}
}
4.调用代理实现业务逻辑
public class ProxyTest {
public static void main(String[] args) {
HelloService proxy=new HelloProxy(new HelloServiceImpl()).getProxy();
proxy.hell("dong");
}
}
5.输出内容
todo biz 1...
hello dong
todo biz 2...
1052

被折叠的 条评论
为什么被折叠?



