zoukankan      html  css  js  c++  java
  • 注解方式实现aop:切点表达式的抽取

    目标接口和目标类

    package com.itliu.anno;
    
    public interface TargetInterface {
    
        public void save();
    }
    
    
    package com.itliu.anno;
    
    import org.springframework.stereotype.Component;
    
    @Component("target")
    public class Target implements TargetInterface {
        public void save() {
            System.out.println("打印Target");
        }
    }
    
    

    切面类

    package com.itliu.anno;
    
    import org.aspectj.lang.ProceedingJoinPoint;
    import org.aspectj.lang.annotation.*;
    import org.springframework.stereotype.Component;
    
    @Component("myAespect")
    @Aspect//标注当前类是一个切面
    public class MyAespect {
    
    //    定义切点表达式
        @Pointcut("execution(public void com.itliu.anno.Target.*(..))")
        public void pointcut(){}
    
        //    配置前置通知
        @Before("pointcut()")
        public void before() {
            System.out.println("前置增强");
        }
    
        //    配置后置通知
        @After("pointcut()")
        public void after() {
            System.out.println("后置增强");
        }
    
        //    配置环绕通知
        @Around("pointcut()")
        public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
            System.out.println("环绕前增强");
            Object proceed = joinPoint.proceed();//切点方法
            System.out.println("环绕后增强");
            return proceed;
        }
    
    }
    
    

    配置文件

    <?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-3.0.xsd">
    
        <!--    组件扫描-->
        <context:component-scan base-package="com.itliu.anno"></context:component-scan>
    
        <!--AOP自动代理-->
        <aop:aspectj-autoproxy></aop:aspectj-autoproxy>
        
    </beans>
    
  • 相关阅读:
    性能测试时如何确认并发用户数
    web测试误区:浏览器后退键退出系统会话失效
    读书笔记(一)
    Loadrunner参数化数据配置与更新方式
    常见软件测试类型及特点
    Loadrunner录制脚本与编写脚本的区别
    软件测试常见文档要点及区别
    APP测试之Monkey测试
    Python操作Redis大全
    【IntelliJ IDEA】在idea上操作 git分支合并【如何将远程swagger分支 合并到 远程 master分支上】【如何切换 本地分支】
  • 原文地址:https://www.cnblogs.com/lyd447113735/p/14379236.html
Copyright © 2011-2022 走看看