java 代理机制的实例详解
发布时间 - 2026-01-11 02:56:56 点击率:次java 代理机制的实例详解

前言:
java代理分静态代理和动态代理,动态代理有jdk代理和cglib代理两种,在运行时生成新的子类class文件。本文主要练习下动态代理,代码用于备忘。对于代理的原理和机制,网上有很多写的很好的,就不班门弄斧了。
jdk代理
实例代码
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
public class ProxyFactory implements InvocationHandler {
private Object tarjectObject;
public Object creatProxyInstance(Object obj) {
this.tarjectObject = obj;
return Proxy.newProxyInstance(this.tarjectObject.getClass()
.getClassLoader(), this.tarjectObject.getClass()
.getInterfaces(), this);
}
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
Object result = null;
if (AssessUtils.isAssess()) {
result = method.invoke(this.tarjectObject, args);
}else{
throw new NoAssessException("This server cannot run this service.");
}
return result;
}
}
cglib代理
import java.lang.reflect.Method;
import org.springframework.cglib.proxy.Enhancer;
import org.springframework.cglib.proxy.MethodInterceptor;
import org.springframework.cglib.proxy.MethodProxy;
public class ProxyCglibFactory implements MethodInterceptor {
private Object tarjectObject;
public Object creatProxyInstance(Object obj) {
this.tarjectObject = obj;
Enhancer enhancer=new Enhancer();
enhancer.setSuperclass(this.tarjectObject.getClass());
enhancer.setCallback(this);
return enhancer.create();
}
@Override
public Object intercept(Object obj, Method method, Object[] args,
MethodProxy arg3) throws Throwable {
Object result = null;
if (AssessUtils.isAssess()) {
result = method.invoke(this.tarjectObject, args);
}else{
throw new NoAssessException("This server cannot run this service.");
}
return result;
}
}
Aspect注解
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
@Aspect
public class AssessInterceptor {
@Pointcut(value="execution (* com..*.*(..))")
private void anyMethod(){};
@Before("anyMethod()")
public void doBefore(JoinPoint joinPoint) throws NoAssessException{
if (!AssessUtils.isAssess()) {
throw new NoAssessException("This server cannot run this service.");
}
}
/**
* Around异常的时候调用
* @param pjp
* @throws Throwable
*/
@Around("anyMethod()")
public void invoke(ProceedingJoinPoint pjp) throws Throwable{
pjp.proceed();
}
}
以上就是java代理机制的实例,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# java
# 代理机制
# 代理机制的实例
# 代理机制如何实现
# 全面了解Java中的CAS机制
# 关于Java反射机制 你需要知道的事情
# Java动态代理机制的实例详解
# 浅谈用java实现事件驱动机制
# Java Proxy机制详细解读
# 很好
# 班门弄斧
# 子类
# 有很多
# 就不
# 如有
# 两种
# 希望能
# 谢谢大家
# 疑问请
# 网上
# creatProxyInstance
# obj
# return
# tarjectObject
# implements
# ProxyFactory
# Object
# private
# getClassLoader
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何快速完成中国万网建站详细流程?
网站制作价目表怎么做,珍爱网婚介费用多少?
js实现获取鼠标当前的位置
高端建站三要素:定制模板、企业官网与响应式设计优化
JavaScript如何实现类型判断_typeof和instanceof有什么区别
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案
如何在 Pandas 中基于一列条件计算另一列的分组均值
如何在新浪SAE免费搭建个人博客?
Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门
Windows Hello人脸识别突然无法使用
Python自然语言搜索引擎项目教程_倒排索引查询优化案例
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法
微信推文制作网站有哪些,怎么做微信推文,急?
如何在局域网内绑定自建网站域名?
Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权
使用PHP下载CSS文件中的所有图片【几行代码即可实现】
Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】
如何使用 jQuery 正确渲染 Instagram 风格的标签列表
如何快速生成橙子建站落地页链接?
香港服务器租用费用高吗?如何避免常见误区?
如何在万网开始建站?分步指南解析
Python文件流缓冲机制_IO性能解析【教程】
极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?
CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】
在线制作视频的网站有哪些,电脑如何制作视频短片?
用yum安装MySQLdb模块的步骤方法
jQuery validate插件功能与用法详解
音乐网站服务器如何优化API响应速度?
Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程
标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
如何在IIS服务器上快速部署高效网站?
Android自定义listview布局实现上拉加载下拉刷新功能
Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解
今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】
Laravel怎么在Blade中安全地输出原始HTML内容
Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】
如何获取上海专业网站定制建站电话?
Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】
LinuxShell函数封装方法_脚本复用设计思路【教程】
如何快速选择适合个人网站的云服务器配置?
Laravel如何处理异常和错误?(Handler示例)
如何用AI帮你把自己的生活经历写成一个有趣的故事?
如何制作一个表白网站视频,关于勇敢表白的小标题?
如何确保FTP站点访问权限与数据传输安全?
如何在橙子建站中快速调整背景颜色?

