Java

Java,第1张

Java 前言

AOP即面向切面编程。

理解
  • 通常我们项目中除业务功能外,还需要增加一些系统功能,例如日志记录、权限控制、事务管理等,如果用面向对象思想进行开发会造成业务代码的污染,以及大量重复代码散落在各个地方,加大后期维护成本。
  • Spring提供的AOP可以理解为是面向对象的一种补充,它通过运行时动态代理的方式为程序增加统一的功能。AOP的存在不仅提高了代码的复用性及高内聚,同时也降低了代码的耦合性。
  • 简单理解,组成一个切面三要点:
  1. 在哪里切入(例如日志记录等非业务 *** 作在哪些业务代码执行)。
    bean(sysUserServiceImpl): 匹配指定bean的方法执行
    @within(com.sys.service.sysUserServiceImpl): 匹配指定包名下类中的方法执行
    execution(String com.sys.service.sysUserServiceImpl.addUser(User)): 按照(返回值类型 包名.类名.方法名(参数))细粒度匹配执行
    @annotation(com.sys.common.annotation.Log): 匹配指定注解修饰的方法执行

  2. 什么时候切入(在业务代码执行前还是执行后)
    前置通知(@Before): 方法执行之前执行
    返回通知(@AfterReturning): 方法return之后执行
    异常通知(@AfterThrowing): 方法出现异常之后执行
    后置通知(@After): 又称之为最终通知(finally)
    环绕通知(@Around): 方法执行前以及执行后都要执行、优先级最高

  3. 做哪些事情(例如日志记录、权限校验等)

结束语

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4670858.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-06
下一篇 2022-11-06

发表评论

登录后才能评论

评论列表(0条)

保存