aop面向切面编程浅显理解以及使用

    编程中将重复代码提取出来,如果直接调用重复代码,会出现耦合度情况,为了减少类间耦合,但在需要的时候可以加入代码,可以用aop来实现.

    官方定义:在运行时,动态的将代码切入到类的指定方法、指定位置上的变成思想就是面向切面编程。

    aop 实现了动态的执行一段代码,且这段代码随意改变,不用遍历所有原有代码,改变原有代码。

    与动态配置文件的作用进行比较:动态配置文件,可以在运行的时候动态配置参数,参数抽取出来,随时更改配置;aop,将重复代码提取出来,让框架注入给需要的文件,或者可以在不改动原有代码时,添加一段代码插入到很多文件。整合控制很多文件,避免重复代码,以及类间耦合。

使用场景示例:定义了很多抽象类,每个抽象类有A,B两个类继承,可以使用aop,在调用抽象类之前给进程设置选择哪个子类。

    使用:

要插入的代码:切面(aspect)

@Aspect //标注为切面,要插入的代码块
@Component  //标注此类为bean
public class LoggingAspect {

    // execution(执行方法指定) before 为方法前,after为方法后,around为前后都执行
    @PointCut("execution(public * com.service.*(..))")
    public void judgeSwitch(){}


    // 在judgeSwitch()方法前执行
    @Before("judgeSwitch()")
    public void doAccessCheck() {
        System.err.println("[Before] do access check...");
    }

    // 在judgeSwitch()方法前后都执行
    @Around("judgeSwitch()")
    public Object doLogging(JoinPoint jp) throws Throwable {
        Signature signature = jp.getSignature();
    }
}

在使用的类上标注@EnableAspectJAutoProxy。即可标注在这个类之前,spring框架会先找是否有切面要注入进去。

aop除了@EnableAspectJAutoProxy注解,常用的是自定义一个注解,然后在aspect中execution后面写自定义注解名,此时在使用自定义注解的地方即可调用aop切面。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值