`

spring之aop整理

 
阅读更多

好久不怎么用,今天整理一下

 

前置通知 @Before 目标方法执行之前

后置通知 @After  目标方法执行后,不管目标方法执行是否异常,该方法都会执行

返回通知 @AfterReturning 返回通知是可以访问到方法的返回值的 result

异常通知 @AfterThrowing 在目标方法出现异常时会执行

环绕通知 环绕通知类似于动态代理的全过程 必须有返回值, 返回值即为目标方法的返回值

 

 

执行顺序:

   正常:

       

 

   异常:

       

 

 

 

@Aspect  

public class TestAnnotationAspect {  

  

    @Pointcut("execution(* com.spring.service.*.*(..))")  

    private void pointCutMethod() {  

    }  

  

    //声明前置通知  目标方法执行之前

    @Before("pointCutMethod()")  

    public void doBefore(JoinPoint joinPoint) {  

        String methodName = joinPoint.getSignature().getName();

        System.out.println("前置通知");  

    }

 

    //声明后置通知  目标方法执行后,不管目标方法执行是否异常,该方法都会执行

    @After("pointCutMethod()")  

    public void doAfter(JoinPoint joinPoint) {  

        System.out.println("后置通知");  

    }  

  

    //声明返回通知  返回通知是可以访问到方法的返回值的 result

    @AfterReturning(value = "pointCutMethod()", returning = "result")  

    public void doAfterReturning(JoinPoint joinPoint,Object result) {  

        System.out.println("返回通知");  

        System.out.println("---" + result + "---");  

    }  

  

    //声明异常通知  在目标方法出现异常时会执行

    @AfterThrowing(value = "pointCutMethod()", throwing = "e")  

    public void doAfterThrowing(JoinPoint joinPoint,Exception e) {  

        System.out.println("异常通知");  

        System.out.println(e.getMessage());  

    }  

  

   

  

    /**

     * 环绕通知需要携带 ProceedingJoinPoint 类型的参数. 

     * 环绕通知类似于动态代理的全过程: ProceedingJoinPoint 类型的参数可以决定是否执行目标方法.

      * 且环绕通知必须有返回值, 返回值即为目标方法的返回值

      */

/*

@Around("pointCutMethod()")

public Object aroundMethod(ProceedingJoinPoint pjd){

 

   Object result = null;

   String methodName = pjd.getSignature().getName();

 

   try {

       //前置通知

      System.out.println("The method " + methodName + " begins with " + Arrays.asList(pjd.getArgs()));

      //执行目标方法

      result = pjd.proceed();

      //返回通知

      System.out.println("The method " + methodName + " ends with " + result);

   } catch (Throwable e) {

       //异常通知

       System.out.println("The method " + methodName + " occurs exception:" + e);

       throw new RuntimeException(e);

    }

   //后置通知

   System.out.println("The method " + methodName + " ends");

 

   return result;

}

*/ 

}  

 

 

/**

 *这个注解可以指定切面的优先级  越小优先级越高

 *

 */

@Order(1)

 

   

  • 大小: 14.6 KB
  • 大小: 14.7 KB
分享到:
评论

相关推荐

    spring-aop-4.3.18.RELEASE.jar

    springMVC必须的第一个jar包,后续的jar包我会陆续上传,如果大家有需要可以私信,我将所有的工具整理好发送给大家,谢谢大家的支持!

    Spring学习篇AOP知识整理编程开发技术共4页.pdf

    在IT行业中,Spring框架是Java开发领域中不可或缺的一部分,它为开发者提供了强大的依赖注入(DI)功能以及面向切面编程(AOP)的支持。本文将深入探讨Spring AOP这一核心特性,帮助你理解和掌握其在实际开发中的...

    Spring 2.0 AOP 完整例子

    网上找了很多例子多数都不能运行。包括after,before,round,throw切入,可对类直接拦截,不需要定义接口文件,自己研究了2天整理出来的。 Spring AOP 的完整例子,可直接运行。带jar包。

    Spring IOC和AOP代码与笔记整理

    Spring框架是Java开发中不可或缺的一部分,它以IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)为核心,极大地简化了企业级应用的开发工作。本篇将深入探讨Spring的这两...

    整理的Spring AOP Aspect切入点语法

    整理的Spring AOP Aspect切入点语法,老师整理的,2018.08.01最新版

    个人整理的关于AOP概念

    在Spring AOP中,切面可以通过基于模式的风格或@Aspect注解风格实现。 2. **连接点(Joinpoint)**:程序执行过程中的特定点,如方法调用或异常处理。在Spring AOP中,连接点通常指方法执行。 3. **通知(Advice)**:...

    jar包 spring-aop-4.1.3.RELEASE.jar

    免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,...

    spring知识点代码示例整理

    Spring 框架是 Java 开发中的核心框架之一,它为构建企业级应用程序提供了全面的解决方案。本资源包含了 Spring 框架多个关键模块的代码示例,旨在帮助学习者深入理解和实践 Spring 的核心功能。 1. **Spring AOP...

    spring详细知识整理

    3. **AOP(面向切面编程)**:Spring支持AOP,允许我们在不修改业务代码的情况下添加横切关注点,如日志、事务管理等。 4. **事务管理**:Spring提供了声明式事务管理,简化了事务处理的复杂性。 5. **MVC框架**:...

    SpringAOP APP

    这些天自己整理的一些对SpringAOP的认识

    spring.net 资料整理

    此外,Spring.NET 还支持 AOP(面向切面编程),允许开发者在不修改源代码的情况下,向现有代码添加新的功能或监控行为。AOP 在 Spring.NET 中主要通过代理模式实现,可以用于事务管理、日志记录、性能度量等场景。 ...

    spring整理好的jar包.zip

    这个名为“spring整理好的jar包.zip”的压缩文件包含了Spring框架中几个关键领域的核心组件,旨在简化开发过程并提升效率。让我们逐一深入理解这些组件及其在实际应用中的作用。 首先,我们来看“ioc专用包”。IOC...

    Spring基础学习资料,很全面,很经典,手工整理,适合刚学习spring的同学

    Spring的核心特性之一是控制反转(Inversion of Control, IOC),它将对象的创建和管理交给Spring容器。依赖注入(Dependency Injection, DI)则是实现IOC的一种方式,允许你声明对象之间的依赖关系,而不是在代码...

    Spring笔记整理.zip

    7. **Bean装配**:Spring的bean装配是其核心特性之一,它负责管理和组合应用中的对象。通过XML、注解或Java配置,我们可以定义bean之间的依赖关系,使组件之间的解耦达到最大化。 8. **注解**:Spring框架中的注解...

    spring5学习代码整理文件

    这个"spring5学习代码整理文件"包含了个人在学习Spring5过程中整理的各种代码示例,旨在帮助理解和掌握Spring5的关键概念和技术。 1. **依赖注入(DI)**:Spring5通过DI来解耦应用程序组件,使得组件之间不再硬...

    Spring面试专题及答案整理.pdf

    通过以上介绍,我们可以看到Spring框架的强大之处在于其高度的灵活性、模块化设计以及对于现有技术的良好集成。无论是对于初学者还是资深开发者来说,Spring都提供了强大的工具和支持,帮助他们构建高效、可靠的Java...

    【新手向】spring系列jar包整理

    【新手向】Spring系列Jar包整理是一篇针对初学者的指南,主要涵盖了Spring框架的核心组件以及与MyBatis集成的相关库。在这个压缩包中,包含了以下几个重要的Java库: 1. **spring-core-5.2.5.RELEASE.jar**: 这是...

    Spring面试专题及答案整理文档.rar

    2. **依赖注入**:Spring框架的核心特性之一,通过DI,对象之间的依赖关系不再硬编码,而是由外部容器负责管理,提高了代码的可测试性和可维护性。Spring支持构造器注入、setter注入和接口注入三种方式。 3. **AOP*...

    ssm之spring总结和整理 java框架

    spring方面介绍 常用注解 生命周期 AOP DI

Global site tag (gtag.js) - Google Analytics