当前位置: 首页 > news >正文

网站建设课程设计百度文库手机推广软文

网站建设课程设计百度文库,手机推广软文,建设银行客户端网站,物流公司网站制作模板代理模式 静态代理,动态代理 代理模式主要包含三个角色,即抽象主题角色(Subject)、委托类角色(被代理角色,Proxied)以及代理类角色(Proxy) 抽象主题角色:可以是接口,也可以是抽象类; 委托类角色:真实主题…

代理模式

静态代理,动态代理

代理模式主要包含三个角色,即抽象主题角色(Subject)、委托类角色(被代理角色,Proxied)以及代理类角色(Proxy)

抽象主题角色:可以是接口,也可以是抽象类;
委托类角色:真实主题角色,业务逻辑的具体执行者;
代理类角色:内部含有对真实对象RealSubject的引用,负责对真实主题角色的调用,并在真实主题角色处理前后做预处理和后处理。

 

静态代理:

静态代理需要自己人工编写代理类代码,常用的如,接口、继承,XXX.java-XXXImpl.java 就是静态代理。

动态代理:

不需要写代理类对象,运行阶段通过JVM根据反射等机制动态的生成(jdk动态代理(反射),cglib动态代理(ASM字节码,效率更高))。

被代理的对象如果实现了接口采用Jdk动态代理,没有实现接口则使用Cglib动态代理

 

SpringAOP

AOP编程不是Spring独有的(AspectJ、Spring AOP、JBoss AOP),Spring只是支持AOP编程的框架之一。AOP分两类,一类可以对方法的参数进行拦截,一类是对方法进行拦截,SpringAOP属于后者,所以Spring的AOP是属于方法级的。

连接点(Joinpoint): 程序执行的某个特定位置,如某个方法调用前,调用后,方法抛出异常后,这些代码中的特定点称为连接点。简单来说,就是在哪加入你的逻辑增强
连接点表示具体要拦截的方法,上面切点是定义一个范围,而连接点是具体到某个方法
切点(PointCut): 每个程序的连接点有多个,如何定位到某个感兴趣的连接点,就需要通过切点来定位。比如,连接点--数据库的记录,切点--查询条件
切点用于来限定Spring-AOP启动的范围,通常我们采用表达式的方式来设置,所以关键词是范围
增强(Advice): 增强是织入到目标类连接点上的一段程序代码。在Spring中,像BeforeAdvice等还带有方位信息
通知是直译过来的结果,我个人感觉叫做“业务增强”更合适 对照代码就是拦截器定义的相关方法,通知分为如下几种:
前置通知(before):在执行业务代码前做些操作,比如获取连接对象
后置通知(after):在执行业务代码后做些操作,无论是否发生异常,它都会执行,比如关闭连接对象
异常通知(afterThrowing):在执行业务代码后出现异常,需要做的操作,比如回滚事务
返回通知(afterReturning):在执行业务代码后无异常,会执行的操作
环绕通知(around):这个目前跟我们谈论的事务没有对应的操作,所以暂时不谈
目标对象(Target): 需要被加强的业务对象
织入(Weaving): 织入就是将增强添加到对目标类具体连接点上的过程。
织入是一个形象的说法,具体来说,就是生成代理对象并将切面内容融入到业务流程的过程。
代理类(Proxy): 一个类被AOP织入增强后,就产生了一个代理类。
切面(Aspect): 切面由切点和增强组成,它既包括了横切逻辑的定义,也包括了连接点的定义,SpringAOP就是将切面所定义的横切逻辑织入到切面所制定的连接点中。

 

1)代理的创建
创建代理工厂:拦截器数组,目标对象接口数组,目标对象。
创建代理工厂时,默认会在拦截器数组尾部再增加一个默认拦截器 —— 用于最终的调用目标方法。
当调用 getProxy 方法的时候,会根据接口数量大余 0 条件返回一个代理对象(JDK or Cglib)。
注意:创建代理对象时,同时会创建一个外层拦截器,这个拦截器就是 Spring 内核的拦截器,用于控制整个 AOP 的流程。
2)代理的调用
当对代理对象进行调用时,就会触发外层拦截器。
外层拦截器根据代理配置信息,创建内层拦截器链。创建的过程中,会根据表达式判断当前拦截是否匹配这个拦截器。而这个拦截器链设计模式就是职责链模式。
当整个链条执行到最后时,就会触发创建代理时那个尾部的默认拦截器,从而调用目标方法,最后返回。
 

 

 

http://www.lbrq.cn/news/2787373.html

相关文章:

  • 两个女孩子怎么做网站百度推广课程
  • 分类信息网站系统cms磁力兔子搜索引擎
  • pc网站开发制作在线推广
  • wordpress页面大小调节二级域名和一级域名优化难度
  • 青岛房产交易中心官网北京seo全网营销
  • 上线了网站怎么样黑帽seo联系方式
  • java服务器端开发是网站开发吗怎么制作seo搜索优化
  • 网站推广前景怎么样bt磁力搜索
  • 美国一级a做爰片免费网站 视频播放网络服务提供者不是网络运营者
  • 产品设计排名seo优化的主要内容
  • 丹江口做网站百度竞价推广登录
  • 深圳网站建设 网站制作 网站设计【迅美】旧版百度收录查询代码
  • 建站系统排行榜一个新手如何推销产品
  • 宣传网站怎么做沈阳百度seo关键词优化排名
  • html5做视频网站软件开发外包
  • 大连做网站billionseo公司宣传网站制作
  • 网站建设lieyanma风云榜
  • 深圳十大网站建设百度识图查另一半情头
  • 东莞做微网站建设网站推广计划方案
  • 现在网站怎么备案地推拉新app推广怎么做
  • 企业模板之家seo搜索引擎招聘
  • 东莞企业模板建站百度手机助手网页版
  • 什么是网站的二级目录下站长工具四叶草
  • 做振动盘的企业网站jsurl转码
  • 网站建设定价百度营销推广
  • 白色网站源码天津百度推广电话号码
  • 金山专业做网站推广软文
  • 网站建设实训心得及收获公司建官网要多少钱
  • 什么网站做企业邮箱服务网站友情链接出售
  • 农副产品销售网站开发小学生简短小新闻十条
  • strlen 函数的使用与模拟实现
  • Vue 2 项目中快速集成 Jest 单元测试(超详细教程)
  • Kubernetes 简介
  • 链表-2.两数相加-力扣(LeetCode)
  • 基于 PyTorch 模型训练优化、FastAPI 跨域配置与 Vue 响应式交互的手写数字识别
  • 大语言模型中的归一化实现解析