• spring5笔记之AOP(二)


    1、创建类,在类里面定义方法
    public class User {
    public void add() {
    System.out.println("add.......");
    }
    }
    2、创建增强类(编写增强逻辑)
    (1)在增强类里面,创建方法,让不同方法代表不同通知类型
    //增强的类
    public class UserProxy {
    public void before() {//前置通知
    System.out.println("before......");
    }
    }
    3、进行通知的配置
    (1)在 spring 配置文件中,开启注解扫描
    <?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:context="http://www.springframework.org/schema/context"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd
    http://www.springframework.org/schema/aop
    http://www.springframework.org/schema/aop/spring-aop.xsd">
    <!-- 开启注解扫描 -->
    <context:component-scan base
    package="com.atguigu.spring5.aopanno"></context:component-scan>
    (2)使用注解创建 User 和 UserProxy 对象
    (3)在增强类上面添加注解 @Aspect
    //增强的类@Component
    @Aspect //生成代理对象
    public class UserProxy {
    (4)在 spring 配置文件中开启生成代理对象
    <!-- 开启 Aspect 生成代理对象-->
    <aop:aspectj-autoproxy></aop:aspectj-autoproxy>
    4、配置不同类型的通知
    (1)在增强类的里面,在作为通知方法上面添加通知类型注解,使用切入点表达式配置
    //增强的类
    @Component
    @Aspect //生成代理对象
    public class UserProxy {
    //前置通知
    //@Before 注解表示作为前置通知
    @Before(value = "execution(* com.study.spring5.aopanno.User.add(..))")
    public void before() {
    System.out.println("before.........");
    }
    //后置通知(返回通知)
    @AfterReturning(value = "execution(*com.study.spring5.aopanno.User.add(..))")
    public void afterReturning() {
    System.out.println("afterReturning.........");
    }
    //最终通知
    @After(value = "execution(* com.study.spring5.aopanno.User.add(..))")
    public void after() {
    System.out.println("after.........");
    }
    //异常通知
    @AfterThrowing(value = "execution(*
    com.study.spring5.aopanno.User.add(..))")
    public void afterThrowing() {
    System.out.println("afterThrowing.........");
    }
    //环绕通知
    @Around(value = "execution(* com.study.spring5.aopanno.User.add(..))")
    public void around(ProceedingJoinPoint proceedingJoinPoint) throws
    Throwable {
    System.out.println("环绕之前.........");
    //被增强的方法执行
    proceedingJoinPoint.proceed();
    System.out.println("环绕之后.........");
    }
    }
    5、相同的切入点抽取
    //相同切入点抽取
    @Pointcut(value = "execution(* com.study.spring5.aopanno.User.add(..))")public void pointdemo() {
    }
    //前置通知
    //@Before 注解表示作为前置通知
    @Before(value = "pointdemo()")
    public void before() {
    System.out.println("before.........");
    }
    6、有多个增强类多同一个方法进行增强,设置增强类优先级
    (1)在增强类上面添加注解 @Order(数字类型值),数字类型值越小优先级越高
    @Component
    @Aspect
    @Order(1)
    public class PersonProxy
    7、完全使用注解开发
    1)创建配置类,不需要创建 xml 配置文件
    @Configuration
    @ComponentScan(basePackages = {"com.atguigu"})
    @EnableAspectJAutoProxy(proxyTargetClass = true)
    public class ConfigAop {
    }
  • 相关阅读:
    怎样用Lodrunner测试WAP站点的性能(两种解决方案)
    LR测试登陆后进行的操作时 绕过登录
    单元测试 模块接口测试
    一个分布式服务器集群架构方案
    利用loadrunner代理方式,录制手机APP脚本
    安卓开发环境安卓
    安卓自动化测试(2)Robotium环境搭建与新手入门教程
    安卓自动化测试(1)安卓自动化测试原理概念
    HTML框架
    HTML5表单提交与PHP环境搭建
  • 原文地址:https://www.cnblogs.com/zhukaile/p/16032371.html
Copyright © 2020-2023  润新知