首页 > 编程语言 >【知识点】Java代理实现方式

【知识点】Java代理实现方式

时间:2024-04-02 22:35:50浏览次数:32  
标签:知识点 Java JDK 实现 代理 接口 CGLib

Java 代理的几种实现方式

静态代理

通过创建一个代理类来控制对目标对象的访问(也就是手动编写一个代理类)。

静态代理的优点是易于理解和实现,缺点是每个接口都需要定义一个代理类,而且功能较弱。

动态代理

动态代理分两种,Proxy接口代理和CGLib代理

接口代理

Proxy 代理是JDK内置代理方式,通过接口实现,使用反射动态实现一个实现相同接口的代理类,来达到代理功能。

因此只能代理接口(或者说实现接口的类)。

CGLib

CGLib(Code Generation Library)通过ASM动态生成子类的方式进行代理,因此不能代理final

ASM:Assembly,字节码修改技术


Spring 中的动态代理:

Spring 默认使用JDK代理方式,如果类没有实现接口则会选择CGLib进行代理。

使用JDK Proxy类进行代理不需要引入第三方库,同时类也需要实现一个接口,符合Java面向接口编程的最佳实践。

标签:知识点,Java,JDK,实现,代理,接口,CGLib
From: https://www.cnblogs.com/code-blog/p/18111638

相关文章

  • Java基础
    Java标识符Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。关于Java标识符,有以下几点需要注意:所有的标识符都应该以字母(A-Z或者a-z),美元符($)、或者下划线(_)开始首字符之后可以是字母(A-Z或者a-z),美元符($)、下划线(_)或数字的任何字符组合关键字不......
  • JavaGUI实现文本转换、复制、顶置窗口等功能
    需求描述:实现对文本的处理,比如输入123输出('123')窗口顶置、取消顶置功能一键复制到剪切板源码实现packageJavaGUI;importjavax.swing.*;importjavax.swing.border.LineBorder;importjava.awt.*;importjava.awt.event.ActionEvent;importjava.awt.event.Actio......
  • java基础
    一、运算符     赋值运算符       =   +=  -=  *=  /=  %=  从右边往左执行     基本运算符       +   -   *   /  %     逻辑运算符       &  &&  ......
  • Java方法06:递归讲解
    递归1.A方法调用B方法,我们很容易理解!2.递归就是:A方法调用A方法!就是自己调用自己3.利用递归可以用简单的程序来解决一些复杂的问题。它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要......
  • Java方法05:可变参数
    可变参数1.JDK1.5开始,Java支持传递同类型的可变参数给一个方法2.在方法声明中,在指定参数类型后加一个省略号(...)3.一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明。 ......
  • Java API操作ES
    1、项目搭建Elasticsearch软件是由Java语言开发的,所以也可以通过JavaAPI的方式对Elasticsearch服务进行访问。先IDEA开发工具中创建简单的javaseMaven项目(模块也可),如下:修改pom文件,增加Maven依赖关系如下:<dependencies><dependency><groupId>......
  • 蓝桥杯javaB组备赛
    15届蓝桥杯备赛java语法基础IO框架importjava.util.*;importjava.IO.IOException;importjava.IO.BufferedReader;publicclassMain{publicstaticvoidmain(String[]args)throwsIOException{BufferedReaderreader=newBufferedReader(newInputStre......
  • JavaScript库,编写$()和getElementsByClassName()方法
    背景:JavaScript库是一组预先编写好的JavaScript代码集合,旨在简化常见的网页开发任务。这些库通常包含了许多函数和方法,可以帮助开发人员处理各种任务,比如DOM操作、事件处理、动画效果、AJAX请求等等。使用JavaScript库可以节省开发时间,并提供了一种标准化的方法来解决常见的......
  • JAVA语言学习-Day1
    Java入门特性、版本、环境简单性、面向对象、可移植性、高性能、分布式、动态性(反射机制)、多线程、安全性、健壮性javaSE(标准版)、javaME(嵌入式)、javaEE(企业级)JDK(javadevelopmentkit)、JRE(javaruntimeenvironment)、JVM(javavirtualmachine)卸载jdk删除安装目录、......
  • Java登陆第三十六天——VUE3引入CSS
    在一个.Vue文件中,通常包括以下三部分。<template><style><script>.vue中部分传统部分描述<template>HTML代替传统的.html文件<style>CSS代替传统的.js文件<script>JS代替传统的.css文件声明内部的CSS在.Vue文件中,style标签声明CSS。Hello......