Spring的AOP的注解的通知类型,切入点的注解

Easter79 等级 288 0 0
标签: springaop

Spring的注解的AOP的通知类型

  • @Before:前置通知

  • @AfterReturning:后置通知

  • @Around:环绕通知

  • @AfterThrowing:异常抛出通知

  • @After:最终通知

  • @Pointcut:切入点的注解

    1 /** 2 * 切面类:注解的切面类 3 / 4 @Aspect 5 public class MyAspectAnno { 6 //前置通知 7 @Before(value="execution( com.itheima.spring.demo1.OrderDao.save(..) )") 8 public void before(){ 9 System.out.println("前置通知======"); 10 } 11 //后置通知 12 @AfterReturning(value="execution(* com.itheima.spring.demo1.OrderDao.delete(..))", returning="result") 13 public void afterReturning(Object result){ 14 System.out.println("后置通知====="+result); 15 } 16 @Around(value="execution(* com.itheima.spring.demo1.OrderDao.update(..))") 17 public Object around(ProceedingJoinPoint joinPoint) throws Throwable{ 18 System.out.println("环绕前增强====="); 19 Object obj = joinPoint.proceed(); 20 System.out.println("环绕后增强====="); 21 return obj; 22 } 23 //异常抛出通知 24 @AfterThrowing(value="execution(* com.itheima.spring.demo1.OrderDao.find(..))" , throwing="e") 25 public void find(Throwable e ){ 26 System.out.println("异常抛出通知======"+e.getMessage()); 27 } 28 //最终通知: 29 @After(value="execution(* com.itheima.spring.demo1.OrderDao.find(..))") 30 public void after( ){ 31 System.out.println("最终通知======"); 32 } 33 }

Spring的AOP的注解的通知类型,切入点的注解

 切入点的注解:

配置@Pointcut注解,使用类名.方法

/**
 * 切面类:注解的切面类
 */
@Aspect
public class MyAspectAnno {
    //切入点的注解
    @Pointcut(value="execution(* com.itheima.spring.demo1.OrderDao.find(..))")
    private void pointcut1(){}
    
    @Pointcut(value="execution(* com.itheima.spring.demo1.OrderDao.save(..))")
    private void pointcut2(){}
    
    @Pointcut(value="execution(* com.itheima.spring.demo1.OrderDao.update(..))")
    private void pointcut3(){}
    
    @Pointcut(value="execution(* com.itheima.spring.demo1.OrderDao.delete(..))")
    private void pointcut4(){}
    
    //前置通知
    @Before(value="MyAspectAnno.pointcut2()")
    public void before(){
       System.out.println("前置通知======");
   }
  //后置通知
    @AfterReturning(value="MyAspectAnno.pointcut4()", returning="result")
    public void afterReturning(Object result){
        System.out.println("后置通知====="+result);
    } //环绕通知
    @Around(value="MyAspectAnno.pointcut3()")
    public Object around(ProceedingJoinPoint joinPoint) throws Throwable{
        System.out.println("环绕前增强=====");
        Object obj = joinPoint.proceed();
        System.out.println("环绕后增强=====");
        return obj;
    }
    //异常抛出通知
    @AfterThrowing(value="MyAspectAnno.pointcut1()" , throwing="e")
    public void find(Throwable e ){
       System.out.println("异常抛出通知======"+e.getMessage());
   }

  // 最终通知:
    @After(value="MyAspectAnno.pointcut1()")
    public void after( ){
       System.out.println("最终通知======");
   }
    


}
收藏
评论区

相关推荐

带我的粉丝们一起揭秘spring aop底层原理及实现
实在是不知道写什么了,博主变low了呀。spring aop使得我们的aop开发工作变得简单,这是众所周知的今天还是带我的粉丝们一起揭秘spring aop底层原理及实现吧 哈哈哈哈AOP面向切面编程:主要是通过切面类来提高代码的复用,降低业务代码的耦合性,从而提高开发效率。主要的功能是:日志记录,性能统计,安全控制,事务处理,异常处理等等。 AOP实现原理
AOP系列
AOP(Aspect Orient Programming),我们一般称为面向方面(切面)编程,作为面向对象的一种补充,用于处理系统中分布于各个模块的横切关注点,比如事务管理、日志、缓存等等。AOP实现的关键在于AOP框架自动创建的AOP代理,AOP代理主要分为静态代理和动态代理,静态代理的代表为AspectJ;而动态代理则以Spring AOP为代表。本文
Spring AOP学习(三)
前面已经对Spring AOP做了个简单介绍,今天来分析一下Spring AOP的原理 -- JDK和Cglib代理。 Spring AOP的原理分为三部分,概述、设计模式和实现,见下图: ![AOP原理](https://static.oschina.net/uploads/space/2017/1015/172244_ruIz_3696939.png
Spring AOP schema找不到报错
问题: --- 使用jersey+spring构建RESTful服务,并将应用部署在不能连接外网的服务器上。部署时,报错信息如下, WARNING: Ignored XML validation warning org.xml.sax.SAXParseException: schema_reference.4: Failed to re
Spring AOP 之二:Pointcut注解表达式
简介 -- 在[Spring AOP概述](https://my.oschina.net/u/2474629/blog/1031542)中我们重点注意的是AOP的整体流程和Advice,简化了一些其他的东西,其中就有一些对灵活应用Spring AOP很重要的知识点,例如Pointcut表达式,下面就介绍一下Spring AOP的Pointcut表达式。
Spring AOP 实现
AOP(Aspect Orient Programming),我们一般称为面向切面编程,作为面向对象的一种补充,用于处理系统中分布于各个模块的横切关注点,比如事务、日志、缓存、分布式锁等等。AOP实现的关键在于AOP框架自动创建的AOP代理,AOP代理主要分为静态代理和动态代理,静态代理的代表为AspectJ;而动态代理则以Spring AOP为代表。Spr
Spring Aspect Oriented Programming
    本文是一篇Spring AOP的基础知识分析文章,其中不牵扯源码分析,只包含AOP中重要概念的讲解,分析,以及Spring AOP的用法。     Spring 从2.0版本引入了更加简单却强大的基于xml和AspectJ注解的面向切面的编程方式。在深入了解如何用Spring 进行面向切面的编程前,我们先了解AOP中的几个重要的基本概念,这几个概念
Spring IoC、AOP、Transaction、MVC 归纳小结
* 前言 * Spring的一些概念和思想 * 关于IOC * 关于AOP * Spring与web整合的原理 * * * 前言 == **如果说有什么框架是Java程序员必然会学习、使用到的,那么Spring肯定是其中之一。本篇博客,将根据博主在日常工作中对Spring的使
Spring5.0源码学习系列之Spring AOP简述(九)
前言介绍 ---- 附录:[Spring源码学习专栏](https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fblog.csdn.net%2Fu014427391%2Fcategory_10493299.html) 在前面章节的学习中,我们对Spring框架的IOC实现源码有了一定的了解,接着
SpringBoot2.0 基础案例(11):配置AOP切面编程,解决日志记录业务
本文源码 GitHub地址:知了一笑 https://github.com/cicadasmile/spring-boot-base 一、AOP切面编程 ========= 1、什么是AOP编程 ---------- 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通
SpringBoot项目中使用AOP
1.概述 ---- 将通用的逻辑用AOP技术实现可以极大的简化程序的编写,例如验签、鉴权等。Spring的声明式事务也是通过AOP技术实现的。 具体的代码参照 [示例项目 https://github.com/qihaiyan/springcamp/tree/master/spring-aop](https://www.oschina.net/actio
SpringBoot2.0 基础案例(11):配置AOP切面编程,解决日志记录业务
本文源码 GitHub地址:知了一笑 https://github.com/cicadasmile/spring-boot-base 一、AOP切面编程 ========= 1、什么是AOP编程 ---------- 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通
SpringBoot项目中使用AOP
1.概述 ---- 将通用的逻辑用AOP技术实现可以极大的简化程序的编写,例如验签、鉴权等。Spring的声明式事务也是通过AOP技术实现的。 具体的代码参照 [示例项目 https://github.com/qihaiyan/springcamp/tree/master/spring-aop](https://www.oschina.net/actio
Spring中的AOP(二)——AOP基本概念和Spring对AOP的支持
**AOP的基本概念**     AOP从运行的角度考虑程序的流程,提取业务处理过程的切面。AOP面向的是程序运行中的各个步骤,希望以更好的方式来组合业务逻辑的各个步骤。AOP框架并不与特定的代码耦合,AOP框架能处理程序执行中特定切入点,而不与具体某个类耦合(即在不污染某个类的情况下,处理这个类相关的切点)。下面是一些AOP的一些术语:     切面(
Spring的AOP逐层深入——AOP的基本原理(六)
什么是AOP ------         AOP(Aspect Oriented Programming),意思是面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP基于IoC基础,是对OOP(Object Oriented Programming,面向对象)的延续。同时,AOP实际是GOF设计模式的延续,设计模式孜孜不倦