谈谈对Spring AOP的理解#

  • AOP为面向切面编程,底层是通过动态代理实现,实质上就是将相同逻辑的重复代码横向抽取出来, 拦截对象方法,对方法进行改造、增强!比如在 方法执行前方法返回后方法前后方法抛出异常后 等地方进行一定的增强处理,应用场景: 事务、日志、权限、监控打点

  • 基于动态代理来实现,在容器启动的时候生成代理实例。默认地,如果使用接口的,用 JDK 提供的动态代理实现,如果没有接口,使用 CGLIB 实现

优点:每个关注点现在都集中于一处,而不是分散到多处代码中;服务模块更简洁,服务模块只需关注核心代码

  • @Pointcut(切点):用于定义哪些方法需要被增强或者说需要被拦截
    @Before、@After、@Around、@AfterReturning、@AfterThrowing(增强): 添加到切点指定位置的一段逻辑代码

注:@AfterReturning 比 @After 的方法参数多被代理方法的返回值

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • AOP实现可分为两类(按AOP框架修改源代码的时机): 静态AOP实现:AOP框架在编译阶段对程序进行修改,即实现...
    数独题阅读 2,335评论 0 22
  • 本博中关于spring的文章:Spring IOC和AOP原理,Spring事务原理探究,Spring配置文件属性...
    Maggie编程去阅读 4,120评论 0 34
  • IOC和DI是什么? Spring IOC 的理解,其初始化过程? BeanFactory 和 FactoryBe...
    justlpf阅读 3,495评论 1 21
  • Spring的AOPAOP的基本概念基于注解的“零配置”方式定义切面Bean定义Before增强处理定义After...
    渐丶忘阅读 1,618评论 0 0
  • 今天发生了一些事,烦躁不开心。 刘先森也是一样的,很不开心。 但是不喜欢刘先森不开心,皱眉头不帅气了。他很担心我,...
    依米花Erin阅读 70评论 0 0