# easy-aop **Repository Path**: The-Keyboard/easy-aop ## Basic Information - **Project Name**: easy-aop - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 15 - **Forks**: 1 - **Created**: 2025-01-06 - **Last Updated**: 2025-10-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 简介 本产品【Easy Aop】又名【Aop-】提供一个简单好用,强大的java aop方案。 - 1 万物皆可切 只要是方法就可以切入,支持final方法,static方法,private方法,与容器无关 - 2 api极简 一行代码就可以对method进行拦截 不需要学习aop联盟的各种概念,比如切点,增强,切面等; 采用了类似Html dom的事件机制,把方法的执行分成进入前,退出后,throw后三个事件,让开发者开发一个Aop,就跟在Button上添加一个click事件一样简单。 - 3 高性能 切面的性能优于spring aop - 4,强大 功能强大不设限,不像其他Aop,这个不支持那个不支持。 举个例子:jdk自带的File类,照样切(正式版才会支持) # vs Spring Aop - 支持static方法 - 支持final方法 - 支持private方法 - 支持非spring bean - 无失效场景 # vs AspectJ 极简api # 使用方法 1,引入依赖 ```xml io.gitee.the-keyboard.aop aop- 1.0-beta(最新版) ``` 2,定义method监听类 ```java public class MyMethodListener extends AbstractMethodListener { public void before(BeforeEvent event) { event.getThis(); event.getArguments(); } public void afterReturn(ReturnEvent event) { event.getThis(); event.getArguments(); event.getReturnValue(); } public void exception(ThrowableEvent event) { event.getThis(); event.getArguments(); event.getThrowable(); } } ``` 3,注册method监听 ```java Events events = EventsImpl.getInstance(); //events.addEventListener( // "test.MyBean.say()" // , new MyMethodListener()); events.addEventListener(MethodPointcut.forMethodPointcut("com.easyaop.test..*Bean","say*","(..)") , new MyMethodListener()); events.addEventListener(MethodPointcut.forMethodPointcut(MyBean2.class,"say", String.class,Object.class), new MyMethodListener()); events.addEventListener(new AnnotationPointcut( "com.easyaop.test" ,Log.class), new MyMethodListener()); ```