• 使用注解配置 AOP


    一、使用注解(基于Aspect)

      1、spring不会自动去寻找注解,必须告诉spring那个包下的类有注解

        1.1 先引入xmlns:context命名空间

    <context:component-scan base-package="com.bjsxt.advice"></context:component-scan>

       2、@Component

        2.1 相当于<bean/>

        2.2 如果没有参数,把类名首字母变小写,相当于<bean id=" "/>

        2.3 也可以 @Component(" 自定义名称 ")

       3、实现步骤:

        3.1、在spring配置文件中设置注解在哪些包中

    <context:component-scan base-package="com.bjsxt.advice,com.bjsxt.test"></context:component-scan>

        3.2、在Demo类中添加 @Componet

          3.2.1 在方法上添加 @Pointcut("  ") 定义切点

    @Component
    public class Demo {
        @Pointcut("execution(* com.bjsxt.test.Demo.demo1())")
        public void demo1(){
            System.out.println("demo1");
        }
    }

        3.3、在通知类中配置

          3.3.1 @Component 类被spring管理

          3.3.2 @Aspect 相当于<aop:aspect/> 表示通知方法在当前类中

    @Component
    @Aspect
    public class Advice {
        @Before("com.bjsxt.test.Demo.demo1()")
        public void mybefore(){
            System.out.println("前置通知111");
        }
        @After("com.bjsxt.test.Demo.demo1()")
        public void myafter(){
            System.out.println("后置通知2222");
        }
        @AfterThrowing("com.bjsxt.test.Demo.demo1()")
        public void mythrow(){
            System.out.println("异常通知3333");
        }
        @Around("com.bjsxt.test.Demo.demo1()")
        public Object myarround(ProceedingJoinPoint p) throws Throwable{
            System.out.println("环绕前置");
            Object result = p.proceed();
            System.out.println("环绕后置");
            return result;
        }
    }
    好好学习,天天向上。 努力工作,给自己的和家人一个满意的答案。。。。
  • 相关阅读:
    MySQL进阶
    对象关系_many2many
    objectstate对象三种状态
    自动在数据库中创建表
    Pytest学习之使用多个fixture
    Pytest学习之fixture作用范围(scope)
    python测试dubbo类型接口
    swagger接口注释添加,接口版本变更规则
    Pytest-skip跳过功能
    接口自动化测试介入项目管理流程
  • 原文地址:https://www.cnblogs.com/axu521/p/10144626.html
Copyright © 2020-2023  润新知