理解AOP即面向切面编程。
- 通常我们项目中除业务功能外,还需要增加一些系统功能,例如日志记录、权限控制、事务管理等,如果用面向对象思想进行开发会造成业务代码的污染,以及大量重复代码散落在各个地方,加大后期维护成本。
- Spring提供的AOP可以理解为是面向对象的一种补充,它通过运行时动态代理的方式为程序增加统一的功能。AOP的存在不仅提高了代码的复用性及高内聚,同时也降低了代码的耦合性。
- 简单理解,组成一个切面三要点:
结束语
在哪里切入(例如日志记录等非业务 *** 作在哪些业务代码中执行)。
bean(sysUserServiceImpl): 匹配指定bean的方法执行
@within(com.sys.service.sysUserServiceImpl): 匹配指定包名下类中的方法执行
execution(String com.sys.service.sysUserServiceImpl.addUser(User)): 按照(返回值类型 包名.类名.方法名(参数))细粒度匹配执行
@annotation(com.sys.common.annotation.Log): 匹配指定注解修饰的方法执行什么时候切入(在业务代码执行前还是执行后)
前置通知(@Before): 方法执行之前执行
返回通知(@AfterReturning): 方法return之后执行
异常通知(@AfterThrowing): 方法出现异常之后执行
后置通知(@After): 又称之为最终通知(finally)
环绕通知(@Around): 方法执行前以及执行后都要执行、优先级最高做哪些事情(例如日志记录、权限校验等)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)