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

Easter79
• 阅读 597

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("最终通知======");
   }
    


}
点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
2年前
java中AOP的环绕通知
pom.xml<dependencies<dependency<groupIdorg.springframework</groupId<artifactIdspringcontext</artifactId
Wesley13 Wesley13
2年前
javaWeb
<fontsize5style"lineheight:32px;letterspacing:1px;"<fontcolorred一</font:拦截器:是在面向切面编程的就是在你的service或者一个方法,前调用一个方法,或者在方法后调用一个方法比如动态代理就是拦截器的简单实现,springmvc的aop中的前置通知和后置通知。
Stella981 Stella981
2年前
Spring AOP @Aspect 基本用法
Spring使用的AOP注解分为三个层次:前提条件是在xml中放开了<aop:aspectjautoproxyproxytargetclass"true"/<!开启切面编程功能1、@Aspect放在类头上,把这个类作为一个切面。2、@Pointcut放在方法头上,定义一个可被别的方法引用的切入点
Stella981 Stella981
2年前
SpringAOP
Aspect切面:一个关注点的模块化,这个关注点可能会横切多个对象Joinpoint连接点:程序执行过程中的某个特定的点Advice通知:在切面的某个连接点上执行的动作Pointcut切入点:匹配连接点的断言,在AOP的通知和一个切入点表达式关联Introduction引入:在不修改类代码的前提下,为类添加新的方法
Easter79 Easter79
2年前
Spring的AOP逐层深入——采用注解完成AOP(七)
上篇博文AOP基本原理6我们介绍了AOP的基本原理,以及5种通知的类型,AOP的两种配置方式:XML配置和Aspectj注解方式。    这篇我们使用注解方式来实现一个AOP,我们先看一下项目的目录。     !(https://static.oschina.net/uploads/img/201801/13190133_UNQ
Stella981 Stella981
2年前
Spring 2.0 的AOP介绍及其通知类型
Spring2.0的AOP在Spring2.0中最激动人心的增强之一是关于SpringAOP,它变得更加便于使用而且更加强大,主要是通过复杂而成熟的AspectJ语言的支持功能来实现,而同时保留纯的基于代理的Java运行时。Spring2.0的AOP提供给我们一种新的思考程序结构的方法,能够解决很多纯OOP无法解决的问题——让我们能够在
Stella981 Stella981
2年前
SpringAop的简单实现
AOP当中的概念:1、切入点(Pointcut):在哪些类,哪些方法上切入(where);2、增强(Advice):早期翻译为通知,在方法执行的什么时机(when:方法前/方法后/方法前后)做什么(what:增强的功能);3、切面(Aspect):切面切入点增强,通俗点就是:在什么时机,什么地点,做
Wesley13 Wesley13
2年前
AOP的基本术语
通知、增强(Advice)通知就是你想要的功能,在特定的连接点,AOP框架执行的动作。Spring切面可以应用5种类型的通知:前置通知(Before):在目标方法被调用之前调用通知功能;后置通知(After):在目标方法完成之后调用通知,此时不会关心方法的输出是什么;返回通知(Afterreturni
Easter79 Easter79
2年前
SpringBoot2.0笔记四
当搞全局捕获异常时可以使用到AOP技术,采用异常通知,也可以用AOP搞日志记录在类上面加上@EnableAsyns注解开启异步调用@Asyns,在方法上加上此注解,可以实现异步调用,底层是多线程技术,相当于加上这个注解的方法重新开启了一个单独的线程正常情况下,当A方法调用B方法时,是需要B方法执行完成,有返回结果时等待返回。这是顺序的方式从上到下
Easter79
Easter79
Lv1
今生可爱与温柔,每一样都不能少。
文章
2.8k
粉丝
5
获赞
1.2k