动态代理案例1:

/*要求:运用Proxy动态代理来增强方法

题目:
    1.定义接口Fruit,其中有addFruit方法
    2.定义实现类FruitImpl,实现Fruit接口
    3.定义测试类,利用动态代理类的方式,增强addFruit方法*/

  1 import java.lang.reflect.Proxy;
2 import java.lang.reflect.InvocationHandler;
3 import java.lang.reflect.Method;
4 import java.lang.reflect.InvocationTargetException;
5
6 //接口
7 interface Fruit{
8 public abstract void addFruit();
9 }
10
11 //实现类
12 class FruitImpl implements Fruit{
13 @Override
14 public void addFruit(){
15 System.out.println("添加水果...");
16 }
17 }
18
19 //测试类---编写代理,增强实现类中的方法
20 public class FruitDemo{
21 public static void main(String[] args){
22 //创建动态代理对象
23 Object f = Proxy.newProxyInstance(FruitImpl.class.getClassLoader(), FruitImpl.class.getInterfaces(),
24 new InvocationHandler(){
25 @Override
26 public Object invoke(Object Proxy, Method method, Object[] args){
27 System.out.println("选择水果.....................");
28 Object obj = null;
29 try{
30 obj = method.invoke(new FruitImpl(),args);
31 }catch(IllegalAccessException | InvocationTargetException | IllegalArgumentException e){
32 e.printStackTrace();
33 }
34 System.out.println("添加成功~~");
35 return obj;
36 }
37 }
38 );
39
40 //代理对象向下(接口)转型
41 Fruit f1 = (Fruit) f;
42
43 //转型后的对象执行原方法(已增强)
44 f1.addFruit();
45 }
46 }
47

动态代理案例1:运用Proxy动态代理来增强方法的更多相关文章

  1. TZ_05_Spring_Proxy基于接口的动态代理和基于类的动态代理

    代理:为了增强方法在不添加代码的情况下 1.Proxy基于接口的动态代理 /** * 模拟一个消费者 * @author Administrator * */ public class Client ...

  2. Java进阶 | Proxy动态代理机制详解

    一.Jvm加载对象 在说Java动态代理之前,还是要说一下Jvm加载对象的过程,这个依旧是理解动态代理的基础性原理: Java类即源代码程序.java类型文件,经过编译器编译之后就被转换成字节代码.c ...

  3. JAVA的Proxy动态代理在自动化测试中的应用

    JAVA的动态代理,在MYBATIS中应用的很广,其核心就是写一个interface,但不写实现类,然后用动态代理来实例化并执行这个interface中的方法,话不多说,来看一个实现的例子: 1.先定 ...

  4. java 动态代理范例 InvocationHandler与Proxy

    java 动态代理范例 InvocationHandler与Proxy,拦截与代理 java.lang.reflect.Proxy,Proxy 提供用于创建动态代理类和实例的静态方法.newProxy ...

  5. 动态代理双剑客--JDK Proxy与CGLIB

    背景: 研究过设计模式的同胞们都知道代理模式可以有两种实现方案: 1.接口实现(或继承抽象类) 核心代码片段 ProxySubject-->>doOperation() //dosomet ...

  6. 【Java深入研究】5、Proxy动态代理机制详解

    在学习Spring的时候,我们知道Spring主要有两大思想,一个是IoC,另一个就是AOP,对于IoC,依赖注入就不用多说了,而对于Spring的核心AOP来说,我们不但要知道怎么通过AOP来满足的 ...

  7. Proxy 动态代理 InvocationHandler CGLIB MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  8. Dynamic Proxy (动态代理模式)

    动态代理(运行期行为)主要有一个 Proxy类 和一个 InvocationHandler接口 动态代理角色: 1. 抽象主题角色 2. 真实主题角色(实现了抽象主题接口) 3. 动态代理主题角色(实 ...

  9. Proxy动态代理

    Proxy动态代理 package com.test.dynamicproxy; public interface Subject { public void request(); } package ...

随机推荐

  1. spring boot 学习三:OAuth2 认证

    1:  代码地址: https://github.com/liufeiSAP/uaa-zuul 2:     安装: postgres 下载 https://www.openscg.com/bigsq ...

  2. MFC获取数据的方式

    假设输入框ID是:ID_NUMBER1,ID_NUMBER2,ID_NUMBER3. 获取数据的方式是: int number1,number2,number3; number1 = GetDlgIt ...

  3. 在Elasticsearch6.X中如何实现去重

    1.前言 Elasticsearch有没有类似mysql的distinct的去重功能呢? 1)如何去重计数? 类似mysql: select distinct(count(1)) from my_ta ...

  4. charles关于手机APP抓包

    这里相比其他抓包软件来说要简单的多了,具体步骤如下: 1 使手机和电脑在一个局域网内,不一定非要是一个ip段,只要是同一个漏油器下就可以了,比如电脑连接的有线网ip为192.168.16.12,然后手 ...

  5. OVN学习(二)

    部署OVN实验环境 同OVN学习(一) L3网络 创建逻辑交换机和路由 ### Central节点 ### 创建逻辑交换机和路由器 # ovn-nbctl ls-add inside # ovn-nb ...

  6. 伪类选择器 :nth-child(even) :nth-child(odd) :nth-of-type

    属性 描述 CSS :active 向被激活的元素添加样式. 1 :focus 向拥有键盘输入焦点的元素添加样式. 2 :hover 当鼠标悬浮在元素上方时,向元素添加样式. 1 :link 向未被访 ...

  7. 关于define

    <?php define('local','localhost');//echo constant('local');exit(); define('username','root'); def ...

  8. Linux之常用命令简析

    ls cd mkdir rmdir touch ln cp rm mv 1.ls   显示当前目录下的文件及文件夹(不显示隐藏的) -l   显示详细信息 --all  显示隐藏的文件及文件夹(就是显 ...

  9. JS中substr与substring的区别

    js中substr和substring都是截取字符串中子串,非常相近,可以有一个或两个参数. 语法:substr(start [,length]) 第一个字符的索引是0,start必选 length可 ...

  10. 黑马旅游网案例 Bug集锦