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

响应式科技公司网站模板沈阳网站制作联系方式

响应式科技公司网站模板,沈阳网站制作联系方式,网站的推广和宣传工作如何做,最近播放中文版在线观看电视剧前言 本文涉及到适配模式的基本用法#xff0c;以及在Spring AOP中如何使用#xff0c;首先需要了解适配模式的工作原理#xff0c;然后结合Spring AOP的具体实现来详细详细解析源码。 首先#xff0c;适配模式#xff0c;也就是Adapter Pattern#xff0c;属于结构型设计…前言 本文涉及到适配模式的基本用法以及在Spring AOP中如何使用首先需要了解适配模式的工作原理然后结合Spring AOP的具体实现来详细详细解析源码。 首先适配模式也就是Adapter Pattern属于结构型设计模式主要用于让不兼容的接口能够一起工作。要了解它的定义、结构、应用场景以及优缺点。然后可能需要一个具体的例子来说明比如电压适配器这样用户更容易理解。 接下来是Spring AOP中的拦截器链。如果对AOP的概念有一定了解但想深入知道拦截器链是如何通过适配模式实现的。这里需要分析Spring AOP的源码特别是MethodInterceptor接口和AdvisorAdapter的作用。需要提到具体的类比如MethodBeforeAdviceAdapter、AfterReturningAdviceAdapter和ThrowsAdviceAdapter以及它们如何将不同类型的Advice适配成统一的MethodInterceptor。 实际开发中遇到需要整合不同接口的情况或者在使用Spring AOP时想自定义拦截器了解底层实现有助于调试和扩展。 总结来说回答需要分为两部分适配模式的讲解和Spring AOP拦截器链的源码分析。结合理论、示例和源码。 一、适配模式Adapter Pattern解析 适配模式是一种 结构型设计模式用于将不兼容的接口转换为客户端期望的接口使原本无法协同工作的类能够一起工作。其核心思想是 通过一个中间层适配器解决接口不匹配问题。 1. 适配模式的结构 角色描述目标接口客户端期望的接口如 Target。被适配者需要被适配的现有类如 Adaptee。适配器实现目标接口并持有被适配者的引用转换调用逻辑如 Adapter。 2. 适配模式示例 场景将电压 220V 转换为 5VUSB 充电器即为适配器。 // 目标接口期望的5V电压 interface Voltage5V {int output5V(); }// 被适配者现有的220V电源 class Voltage220V {public int output220V() {return 220;} }// 适配器将220V转换为5V class VoltageAdapter implements Voltage5V {private Voltage220V voltage220V;public VoltageAdapter(Voltage220V voltage220V) {this.voltage220V voltage220V;}Overridepublic int output5V() {int src voltage220V.output220V();return src / 44; // 转换为5V} }// 客户端使用 public class Client {public static void main(String[] args) {Voltage5V adapter new VoltageAdapter(new Voltage220V());System.out.println(adapter.output5V()); // 输出5} }3. 适配模式的类型 类适配器通过继承被适配者实现需支持多继承Java中不适用。对象适配器通过组合被适配者实现推荐方式。 4. 适配模式的优缺点 优点 解耦客户端与被适配者。符合开闭原则无需修改现有代码。 缺点 过度使用可能导致系统复杂化。 5. 应用场景 整合遗留代码或第三方库。统一多个类的接口如日志框架适配。 二、Spring AOP 拦截器链的源码解析 Spring AOP 的拦截器链Interceptor Chain基于 责任链模式但其底层实现中大量使用了 适配模式将不同类型的通知Advice适配为统一的 MethodInterceptor。 1. Spring AOP 核心接口 接口作用MethodInterceptor方法拦截器在方法调用前后执行逻辑AOP Alliance 标准接口。Advice通知的标记接口如 BeforeAdvice、AfterReturningAdvice。Advisor组合 Advice 和切点Pointcut确定在何处应用通知。 2. 适配模式在拦截器链中的应用 Spring 通过 适配器AdvisorAdapter 将不同类型的 Advice 转换为 MethodInterceptor以便统一执行。 源码示例AdvisorAdapter 实现类 Spring 内置三种适配器对应不同类型的通知 MethodBeforeAdviceAdapter将 MethodBeforeAdvice 适配为 MethodInterceptor。AfterReturningAdviceAdapter将 AfterReturningAdvice 适配为 MethodInterceptor。ThrowsAdviceAdapter将 ThrowsAdvice 适配为 MethodInterceptor。 以 MethodBeforeAdviceAdapter 为例 class MethodBeforeAdviceAdapter implements AdvisorAdapter {Overridepublic boolean supportsAdvice(Advice advice) {return (advice instanceof MethodBeforeAdvice);}Overridepublic MethodInterceptor getInterceptor(Advisor advisor) {MethodBeforeAdvice advice (MethodBeforeAdvice) advisor.getAdvice();return new MethodBeforeAdviceInterceptor(advice);} }拦截器链的构建流程 创建代理对象通过 ProxyFactory 创建目标对象的代理。获取所有 Advisor根据切面配置筛选匹配的 Advisor。适配为拦截器调用 AdvisorAdapterRegistry 将 Advisor 中的 Advice 转换为 MethodInterceptor。排序拦截器按优先级排序拦截器形成调用链。 源码入口DefaultAdvisorChainFactory.getInterceptorsAndDynamicInterceptionAdvice() public ListObject getInterceptorsAndDynamicInterceptionAdvice(AdvisorChainFactory config, Method method, Class? targetClass) {ListObject interceptorList new ArrayList();for (Advisor advisor : config.getAdvisors()) {if (advisor instanceof PointcutAdvisor) {// 检查切点是否匹配方法if (((PointcutAdvisor) advisor).getPointcut().getMethodMatcher().matches(method, targetClass)) {// 通过适配器转换为 MethodInterceptorMethodInterceptor[] interceptors config.getInterceptors(advisor);interceptorList.addAll(Arrays.asList(interceptors));}}}return interceptorList; }3. 拦截器链的执行流程 拦截器链的执行通过 ReflectiveMethodInvocation 实现采用 递归调用模式。 源码示例ReflectiveMethodInvocation.proceed() public class ReflectiveMethodInvocation implements ProxyMethodInvocation {private final List? interceptorsAndDynamicMethodMatchers;private int currentInterceptorIndex -1;public Object proceed() throws Throwable {// 所有拦截器执行完毕调用原始方法if (this.currentInterceptorIndex this.interceptorsAndDynamicMethodMatchers.size() - 1) {return invokeJoinpoint();}// 获取下一个拦截器并执行Object interceptor this.interceptorsAndDynamicMethodMatchers.get(this.currentInterceptorIndex);if (interceptor instanceof MethodInterceptor) {MethodInterceptor mi (MethodInterceptor) interceptor;return mi.invoke(this);}// ...} }4. 示例拦截器链的执行顺序 假设存在以下拦截器 Before Advice方法执行前打印日志。Around Advice计算方法执行时间。After Advice方法执行后清理资源。 调用流程 ┌→ BeforeAdviceInterceptor │ ┌→ AroundAdviceInterceptor.proceed() │ │ ┌→ 目标方法执行 │ │ └→ AroundAdviceInterceptor 计算耗时 │ └→ AfterAdviceInterceptor └─ 返回结果三、总结 设计模式在 Spring AOP 中的应用适配模式将不同类型的 Advice 转换为统一的 MethodInterceptor。责任链模式拦截器链按顺序执行每个拦截器决定是否传递调用。 源码核心类 AdvisorAdapter适配 Advice 为 MethodInterceptor。ReflectiveMethodInvocation递归执行拦截器链。ProxyFactory创建代理对象并管理拦截器。 通过适配模式Spring AOP 实现了对多种通知类型的统一处理而拦截器链机制则确保了切面逻辑的灵活组合与执行。这一设计充分体现了 高内聚、低耦合 的架构思想。
http://www.hkea.cn/news/14345658/

相关文章:

  • 网站编辑怎么做内容分类网页设计公司金华
  • 如何制作一个个人网站网站链接优化怎么做
  • 网站建设案例多少钱表白网页生成器下载
  • 西安网站 建设网站制作涉及的法律
  • vs2010网站开发与发布短视频营销案例
  • 网站开发 培训 周末班html基础网页代码
  • 免费俄罗斯网站制作看板娘 wordpress菜单
  • htm网站的维护网页搜索能力属于什么素养
  • 建站工具华为建设求职网站
  • 站长工具端口检测建设网站对公司起什么作用
  • 平顶山做网站优化网络营销培训班
  • 江苏省建设厅网站查询施工员证做网站跳转
  • 合肥高新城建设计院网站必须重视的问题之一
  • 免费发帖推广网站搜易网托管模式的特点
  • 关于网站建设与维护的参考文献php网站开发txt
  • 做消费网站流程国外网站如何做推广
  • 牡丹江商城网站开发设计网站建设公司 深圳信科
  • 手机建立网站软件设计网站的管理系统
  • 可以做家装设计的网站濮阳市住房和城乡建设局网站
  • 百度建站云南服务中心网站建设费入什么科目
  • 房地产东莞网站建设企业邮箱注册价格
  • flask做的网站有哪些成都房地产管理局
  • 营销型网站建设定制网站建设演出票务网站建设
  • 苗木网站模版网页设计是前端还是后端
  • 为什么南极建站在2月云南省建设培训中心网站
  • 个人备案网站放视频网站建设的风险识别
  • 衡阳公司网站建设学校资源网站 建设方案
  • sjz住房建设局网站网站后台管理系统使用方法
  • 爱站网长尾词挖掘百度网站源码优化检测
  • 网站抄袭别人的做可以吗设计师网址导航 优设