浅谈自己对于spring aop的理解

  • 开始学习spring就被重点的关注ioc和aop这两个关键的部分,今天着重了解下关于aop的一些实现和原理。
    • aop 面向切面编程 即可以在业务逻辑前后加上需要的无关业务的处理如日志,权限控制等操作,与实际的业务相分离。
    • 首先需要介绍的技术就是AspectJ 了解了这个之后会对spring的aop实现有对比显示出两者的差异。aspectJ是一个由java实现的aop框架,通过对编译期的代码进行编译 让代码具有aop的功能。
      • 切面就是切点与通知的一个组合,在切面内部定义了两个部分
        • 切点 pointcut 即需要应用切面的方法,
        • pointcut 函数名 call(){匹配表达式}
        • pointcut recordLog():call(* HelloWord.sayHello(..));
        • 通知 advice 需要在目标方法前后执行的函数
          • before 前置通知 目标方法执行前
          • after 后置通知 目标方法执行后
          • after returning 方法返回通知 目标方法返回时执行
          • after throwing 异常通知 目标方法抛出异常时执行
          • around 目标函数中 执行 可以控制目标函数是否执行 环绕通知
        • 目标函数 称为连接点 joinPoint
        • 织入 指代码切入到目标函数的过程 例如aspectJ到java程序的过程称为织人
          • 静态织入 aspectJ 编译为class文件后在目标类中织入
            • idea进行aspectJ
          • 动态织入 jdk动态代理 cglib
            • @Aspect
@Aspect
public class AspectJ {
   
    /**
     * 前置通知
     */
    @Before("execution(* aop.UserDao.addUser(..))")
    public void before(){
        System.out.println("前置通知");
    }

    /**
     * 后置通知
     * 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值