Spring AOP 增强框架 Nepxion Matrix 详解

概述

本篇来继续介绍一款开源的 AOP 框架:Nepxion Matrix,该框架致力于对 Spring AOP 的扩展和增强,灵活而且易用。

Matrix 框架主要对 Spring 做了三个模块的扩展:Spring AutoProxy,Spring Registrar,Spring Selectror。
本篇主要分析 AOP相关的功能,也就是 AutoProxy 模块。主要围绕以下几个方面:

  • Nepxion Matrix AutoProxy框架有什么特性?

  • Nepxion Matrix AutoProxyAOP 增强框架的扩展点什么?如何扩展?

  • 源码分析。

  • 该框架和Spring AOP异同点。


一:Nepxion Matrix AutoProxy特性

大多数的项目中,使用Spring AOP的方式都是采用注解形式,方法上面加个自定义注解即可实现,这种方式注解只能加在类方法上,不能加在接口或接口方法上。Nepxion Matrix AutoProxy主要针对这些问题,特性如下:

  • 支持通用代理和额外代理

  • 支持接口代理和类代理

  • 支持接口方法代理

这里要介绍一下上面提到了两种代理方式:

通用代理是指通过AbstractAutoProxyCreator中的变量interceptorNames,来设置具体的通知名称。 额外代理是指通过实现自定义逻辑,来选择性设置通知(这里的通知也就是拦截方法)。


二:Nepxion Matrix AutoProxy扩展点

要理解该框架的实现方式,首先要知道该框架的扩展点是什么。

先来看一下代理机制相关的 UML 图:

 

AbstractAutoProxyCreator抽象类为Spring AOP暴露的抽象扩展类,其每一个实现类都代表着一种实现机制。Nepxion Matrix也正是基于此类做为扩展点,分别来看一下涉及到核心类:

 

  • AbstractAutoScanProxyNepxion Matrix提供的核心抽象类,封装了获取顾问advisor的方法,并暴露了一些抽象方法,如获取通知,注解等方法。该类同 Spring 内置的代理机制AbstractAdvisorAutoProxyCreator平级,默认先执行Spring AOP内置代理机制。

  • DefaultAutoScanProxy:提供了一些默认为空的实现,不能直接使用。

  • MyAutoScanProxyForClass:类代理机制,提供通用代理实现。

  • MyAutoScanProxyForMethod:方法代理机制,提供额外代理。

  • MyAutoScanProxy:混合代理,提供通用代理和额外代理。


三:源码分析

这里就针对类代理的方式,进行源码分析。先来看源码中的使用示例:

@MyAnnotation1(name = "MyAnnotation1", label = "MyAnnotation1", description = "MyAnnotation1")
public interface MyService1 {
    void doA(String id);

    void doB(String id);
}
@Service
public class MyService1Impl implements MyService1 {
    @Override
    public void doA(String id) {
        System.out.println("doA");
    }

    @Override
    public void doB(String id) {
        System.out.println("doB");
    }
}

示例中只需在接口上添加一个自定义注解@MyAnnotation1&

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Nepxion Discovery【探索】使用指南,基于Spring Cloud Greenwich版、Finchley版和Hoxton版而 制作,对于Edgware版,使用者需要自行修改。使用指南主要涉及的功能包括: 基于Header传递的全链路灰度路由,网关为路由触发点。采用配置中心配置路由规则映射在网 关过滤器中植入Header信息而实现,路由规则传递到全链路服务中。路由方式主要包括版本和 区域的匹配路由、版本和区域的权重路由、基于机器IP地址和端口的路由 基于规则订阅的全链路灰度发布。采用配置中心配置灰度规则映射在全链路服务而实现,所有 服务都订阅某个共享配置。发布方式主要包括版本和区域的匹配发布、版本和区域的权重发布 全链路服务隔离。包括注册隔离、消费端隔离和提供端服务隔离,示例仅提供基于Group隔 离。除此之外,不在本文介绍内的,还包括: 注册隔离:黑/白名单的IP地址的注册隔离、最大注册数限制的注册隔离 消费端隔离:黑/白名单的IP地址的消费端隔离 全链路服务限流熔断降级权限,集成阿里巴巴Sentinel,有机整合灰度路由,扩展LimitApp的 机制,通过动态的Http Header方式实现组合式防护机制,包括基于服务名、基于灰度组、基于 灰度版本、基于灰度区域、基于机器地址和端口等防护机制,支持自定义任意的业务参数组合 实现该功能。支持原生的流控规则、降级规则、授权规则、系统规则、热点参数流控规则 全链路灰度调用链。包括Header方式和日志方式,Header方式框架内部集成,日志方式通过 MDC输出(需使用者自行集成) 同城双活多机房切换支持。它包含在“基于Header传递的全链路灰度路由”里 数据库灰度发布。内置简单的数据库灰度发布策略,它不在本文的介绍范围内 灰度路由和发布的自动化测试 license Apache 2.0 maven central v5.4.0 javadoc 5.4.0 build passing Docker容器化和Kubernetes平台的无缝支持部署

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值