当前位置 主页 > 网站技术 > 代码类 >

    Spring AOP的五种通知方式代码实例

    栏目:代码类 时间:2019-12-12 18:04

    这篇文章主要介绍了Spring AOP的五种通知方式代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    AOP的五种通知方式:

    前置通知:在我们执行目标方法之前运行(@Before)

    后置通知:在我们目标方法运行结束之后,不管有没有异常(@After)

    返回通知:在我们的目标方法正常返回值后运行(@AfterReturning)

    异常通知:在我们的目标方法出现异常后运行(@AfterThrowing)

    环绕通知:目标方法的调用由环绕通知决定,即你可以决定是否调用目标方法,joinPoint.procced()就是执行目标方法的代码 。环绕通知可以控制返回对象(@Around)

    一、导jar包

    com.springsource.net.sf.cglib-2.2.0.jar com.springsource.org.aopalliance-1.0.0.jar com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar commons-logging-1.1.3.jar spring-aop-4.0.0.RELEASE.jar spring-aspects-4.0.0.RELEASE.jar spring-beans-4.0.0.RELEASE.jar spring-context-4.0.0.RELEASE.jar spring-core-4.0.0.RELEASE.jar spring-expression-4.0.0.RELEASE.jar spring-jdbc-4.0.0.RELEASE.jar spring-orm-4.0.0.RELEASE.jar spring-tx-4.0.0.RELEASE.jar spring-web-4.0.0.RELEASE.jar spring-webmvc-4.0.0.RELEASE.jar

    二、在类路径下建applicationContext.xml配置文件

    <?xml version="1.0" encoding="UTF-8" ?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:aop="http://www.springframework.org/schema/aop"
        xmlns:context="http://www.springframework.org/schema/context"
    
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
                  http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
                  http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
      <!--配置自动扫描的包-->
      <context:component-scan base-package="com.atguigu.spring.aop"></context:component-scan>
    
      <!--配置自动为匹配aspectJ 注解的Java类生成代理对象-->
      <aop:aspectj-autoproxy></aop:aspectj-autoproxy>
    
    </beans>

    三、接口

    //接口
    public interface ArithmeticCalculator {
      int add(int i, int j);
      int sub(int i, int j);
      int mul(int i, int j);
      int div(int i, int j);
    }

    四、实现类

    package com.atguigu.spring.aop;
    
    import org.springframework.stereotype.Component;
    
    /**
     * @Author 谢军帅
     * @Date2019/12/6 21:23
     * @Description
     */
    
    //实现类
    @Component("arithmeticCalculator")
    public class ArithmeticCalculatorImpl implements ArithmeticCalculator {
      @Override
      public int add(int i, int j) {
        int relust = i+j;
        return relust;
      }
    
      @Override
      public int sub(int i, int j) {
        int relust = i-j;
        return relust;
      }
    
      @Override
      public int mul(int i, int j) {
        int relust = i*j;
        return relust;
      }
    
      @Override
      public int div(int i, int j) {
        int relust = i/j;
        return relust;
      }
    }