jdk动态代理实现
1、jdk动态代理的简单实现类
package com.proxy; import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy; public class JDKProxy implements InvocationHandler{ private Object target;//目标对象 public JDKProxy(Object target) {
super();
this.target = target;
} @Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("--------------------invoke-before----------------------");
Object object = method.invoke(target, args);
System.out.println("--------------------invoke-after----------------------");
return object;
} public Object getProxy(){
return Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), this);
} }
2、测试用接口和接口实现
package com.proxy.manager; public interface HelloWorldManager { public void sayHello(); }
package com.proxy.manager.impl; import com.proxy.manager.HelloWorldManager; public class HelloWorldManagerImpl implements HelloWorldManager { @Override
public void sayHello() {
System.out.println("Hello World!");
} }
3、测试类
package com.proxy.test; import com.proxy.JDKProxy;
import com.proxy.manager.HelloWorldManager;
import com.proxy.manager.impl.HelloWorldManagerImpl; public class JDKProxyTest { public static void main(String[] args) {
HelloWorldManager hw = new HelloWorldManagerImpl();
JDKProxy jdkProxy = new JDKProxy(hw);
HelloWorldManager hellWorldManager = (HelloWorldManager) jdkProxy.getProxy();
hellWorldManager.sayHello();
} }
4、测试输出接口
--------------------invoke-before----------------------
Hello World!
--------------------invoke-after----------------------
jdk动态代理实现的更多相关文章
- JDK动态代理
一.基本概念 1.什么是代理? 在阐述JDK动态代理之前,我们很有必要先来弄明白代理的概念.代理这个词本身并不是计算机专用术语,它是生活中一个常用的概念.这里引用维基百科上的一句话对代理进行定义: A ...
- 静态代理和利用反射形成的动态代理(JDK动态代理)
代理模式 代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问.在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用. 静态代理 1.新建 ...
- Spring中的JDK动态代理
Spring中的JDK动态代理 在JDK1.3以后提供了动态代理的技术,允许开发者在运行期创建接口的代理实例.在Sun刚推出动态代理时,还很难想象它有多大的实际用途,现在动态代理是实现AOP的绝好底层 ...
- AOP学习心得&jdk动态代理与cglib比较
什么是AOP AOP(Aspect-OrientedProgramming,面向方面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善.OOP引入 ...
- JDK动态代理的实现原理
学习JDK动态代理,从源码层次来理解其实现原理参考:http://blog.csdn.net/jiankunking/article/details/52143504
- Java中的JDK动态代理
所谓代理,其实就是相当于一个中间人,当客户端需要服务端的服务时,不是客户直接去找服务,而是客户先去找代理,告诉代理需要什么服务,然后代理再去服务端找服务,最后将结果返回给客户. 在日常生活中,就拿买火 ...
- JDK动态代理与CGLib动态代理
1.JDK动态代理 JDK1.3以后java提供了动态代理技术,允许开发者在运行期创建接口的代理实例,动态代理是实现AOP的绝好底层技术. JDK的动态代理主要涉及到java.lang.reflect ...
- java jdk动态代理
在面试的时候面试题里有一道jdk的动态代理是原理,并给一个事例直接写代码出来,现在再整理一下 jdk动态代理主要是想动态在代码中增加一些功能,不影响现有代码,实现动态代理需要做如下几个操作 1.首先必 ...
- JDK动态代理的实现及原理
Proxy.newProxyInstance(classloader,Class,invocationHandler) 调用getProxyClass0(loader, interfaces)生成代理 ...
随机推荐
- Centos安装完MariaDB后启动不了 MySQL is not running, but lock file (/var/lock/subsys/mysql) exists
[root@admin-node subsys]# service mysql startStarting MySQL. ERROR! [root@admin-node subsys]# servic ...
- re.S
在Python的正则表达式中,有一个参数为re.S.它表示多行匹配
- HTML table、form表单标签的介绍
1. <table>标签 1.1说明: 在HTML 中定义表格布局. 1.2格式: <table> <caption></caption> <tr ...
- Html.RenderPartial与Html.RenderAction
Html.RenderPartial与Html.RenderAction的区别 Html.RenderPartial与Html.RenderAction这两个方法都是用来在界面上嵌入用户控件的 ...
- your local repository contains non-ascii
安装CCS时候遇到 your local repository contains non-ascii 问题. 解决方法: 不要在中文目录下安装.
- java.lang.ClassCastException: org.slf4j.impl.Log4jLoggerFactory cannot be cast to ch.qos.logback.classic.LoggerContext问题原因及解决方法
一.错误信息 java.lang.ClassCastException: org.slf4j.impl.Log4jLoggerFactory cannot be cast to ch.qos.logb ...
- C++转义字符
R"()"括号中间的字符串可以去掉转义字符
- lnmp无法删除目录,目录包含.user.ini
无法删除".user.ini"文件解决方法,运行后删除即可 chattr -i /home/wwwroot/yoursite/.user.ini 如果是需要修改文件,记得修改完以后 ...
- 关于vue.js中条件渲染的练习
html: <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8 ...
- 【我是老中医】VMware在win8.1下开Ubuntu提示”内部错误"解决方案
这个题目起得很洋气啊,其实问题也比较好解决,但是我想多码几个字!!! 友情提示:如果不想看废话,请直接看最后的红字! 好的,咱们从头说(废话)起.话说我们学院每年都会组织大三的进行校企联合实训(其实就 ...