AOP面向切面编程之AspectJ实现权限申请框架

一、AOP简介

1.1 AOP是啥

AOP(Aspect Oriented Programming):面向切面编程。

1.2 如何运作的

将业务逻辑中与类不相关的通用功能切面式的提取分离出来,让多个类共享一个行为,一旦这个行为发生改变,不必修改类,而只需要修改这个行为即可。

1.3 优缺点

相较于传统的OOP(面向对象编程)技术性能更优。
在这里插入图片描述

二、AspectJ

2.1 简介

AspectJ是一个实现了AOP的框架,它扩展了Java语言。AspectJ定义了AOP语法,它有一个专门的编译器用来生成遵守Java字节编码规范的Class文件。在程序编译过程中通过编译时技术将字节码文件中织入我们自己定义的切面代码。
注意:不管使用哪种方式接入AspectJ,都需要使用AspectJ提供的代码编译工具ajc进行编译

2.2 AspectJ三要素
(1)Pointcut(切入点)
告诉AspectJ需要在原来的业务逻辑中的哪个位置织入自己的代码

(2) Advice(通知)
你要在某个切入点织入的具体的代码的业务逻辑块。典型的 Advice 类型有 before、after 和 around,分别表示在目标方法执行之前、执行后和完全替代目标方法执行的代码。 除了在方法中注入代码,也可能会对代码做其他修改,比如在一个class中增加字段或者接口。

(3) Join Point(连接点)
程序中可能作为代码注入目标的特定的点,例如一个方法调用或者方法入口。

2.2 AOP和OOP代码比较

Aop统计方法执行时间,仅仅只需要添加注解即可,统计逻辑与业务逻辑分离,当需要统计的方法较多时代码维护性较好。

@ExecuteTime
    public void getTime(){
   
        new Thread(new Runnable() {
   
            @Override
            public void run() {
   
                try {
   
                //模拟方法执行耗时时长
                    Thread.sleep(3000);
                } catch (InterruptedException e) {
   
                    e.printStackTrace();
                }
            }
        });
    }

OOP统计方法执行时间,业务逻辑和统计逻辑混淆在一起,当需要统计的方法较多,需要修改统计逻辑时,不利于维护。

public void getTime(){
   
       long startTime = System.currentTimeMillis();
       new Thread(new Runnable() {
   
           @Override
           public void run() {
   
               try {
   
                   Thread.sleep(3000);
               } catch (InterruptedException e) {
   
                   e.printStackTrace();
               }
           }
       });
       long endTime = System.currentTimeMillis();
    }

2.3 AOP应用场景

从上面OO

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值