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;
        }
    }
    好好学习,天天向上。 努力工作,给自己的和家人一个满意的答案。。。。
  • 相关阅读:
    通过域名方式决定使用哪个数据库
    OpenERP/Odoo命令行参数
    修改pip源
    解决python "Non-ASCII character"错误
    Synergy 鼠标和键盘共享软件
    java 线程复习笔记
    常用设计模式--代理模式
    数据结构--二叉树
    mysql 索引的数据结构(B树和B+树)
    JS更改树型json的key键
  • 原文地址:https://www.cnblogs.com/axu521/p/10144626.html
Copyright © 2011-2022 走看看