Java动态代理

本文介绍了Java动态代理的概念,包括其作为运行时处理代理方法调用的机制,以及动态代理的两种主要类型:JDK动态代理和CGLIB动态代理。通过一个艺人表演的入门案例,展示了如何使用JDK动态代理进行功能增强,包括方法体、参数和返回值的修改,以实现对目标对象行为的灵活扩展。
摘要由CSDN通过智能技术生成

Java动态代理

1. 概念

  代理类在程序运行过程中创建代理的方式称为动态代理,它其实是一种方便运行时期动态处理代理方法的调用机制。
  当我们需要对目标对象中的某个方法的功能进行增强时,可采用动态代理的方式。这样既可以实现功能增强,又可以实现调用者与实现者之间的解耦。

2. 类型

动态代理主要有JDK动态代理与CGLIB动态代理两种方式。
1)JDK的动态代理只能用于目标对象的类实现了某个接口;而CGLIB动态代理既可以为实现了接口的类做代理,也可以为没有实现接口的类做代理;
2)在Spring中,如果目标对象实现了接口,优先采用JDK动态代理,如果没有实现接口只能使用CGLIB动态代理。
下一章节,将利用JDK动态代理,做一个简单的入门案例,帮助理解。
在这里插入图片描述

3. 入门案例

需求:现有艺人需要进行才艺表演,现需对具体的表演进行功能增强。
1)定义一个接口(才艺表演接口),其中定义了两个方法,分别是唱歌(sing)与跳舞(dance):

public interface Talent {
   

    String sing(String songName);
    String dance(String danceName);
}

2)定义一个才艺接口的实现类(某艺人团队),进行方法的实现:

public class Star implements Talent {
   

    @Override
    public String sing(String songName) {
   
        System.out.println("计划演唱曲目:光辉岁月");
        return "计划内定结果:冠军";
    }

    @Override
    public String dance(String danceName) {
   
        System.out.println("计划表演舞蹈:霓裳羽衣舞");
        return "计划内定结果:亚军";
    }
}

3)创建才艺表演的类,如果直接执行方法,效果如下:

public static void main(String[] args) {
   
        Star star = new Star();
        System.out.println(star.sing(""));
        System.out.println(star.danc
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值