zoukankan      html  css  js  c++  java
  • 使用注解配置 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;
        }
    }
    好好学习,天天向上。 努力工作,给自己的和家人一个满意的答案。。。。
  • 相关阅读:
    js 模拟表单提交下载文件
    vue 刷新子组件方法解决使用v-if闪屏问题
    Java15-Tomcat&Servlet&HTTP&Request&Response
    JAVA26-SpringBoot-在线教育项目01
    20 Vue-ajax
    19 Vue-JQuery
    18 Vue-Json
    Java 20-Mybatis学习
    17 Vue-ES6语法之Promise、VueX、网络请求封装
    16 Vue-cli脚手架介绍与使用
  • 原文地址:https://www.cnblogs.com/axu521/p/10144626.html
Copyright © 2011-2022 走看看