zoukankan      html  css  js  c++  java
  • spring学习 十三 注解AOP

      spring 不会自动去寻找注解,必须告诉 spring 哪些包下的类中可能有注解,也就是要开启注解扫描,注解的包是spring-context.jar,所以在配置文件中还要引入context约束,也就是引入 xmlns:context命名空间

    第一步开始注解,base-package的属性值指定哪些包下可能有注解,多个包用逗号隔开,也可以采用通配符进行配置

    <!-- 开启注解 -->
        <context:component-scan base-package="com.airplan.pojo,com.airplan.bean"></context:component-scan>
        
        <!-- 
            AOP的注解方式都是采用cglib动态代理
             proxy-target-class="true"代表采用cglib动态代理
             false代表使用jdk的动态代理
         -->
        <aop:aspectj-autoproxy proxy-target-class="true"></aop:aspectj-autoproxy>

    第二步:对要注册到spring器的类打上注解,例如@Service,@Component等

    @Component  相当于<bean/>,如果没有参数,把类名首字母变小写,相当于<bean id=””/>,也可以@Component(“自定义名称”)

    我们对通知类,以及切点所在的类要打上注解
    切点类:在方法上添加@Pointcut(“”) 定义切点

    package com.airplan.pojo;
    
    import org.aspectj.lang.annotation.Pointcut;
    import org.springframework.stereotype.Component;
    
    @Component("pointCutClass")
    public class PointCutClass {
        /**
         * 声明切点
         * @param name01
         */
        @Pointcut("execution(* com.airplan.pojo.PointCutClass.*(..))")
        public void pointCutFun() {
            
            System.out.println("切点执行");
        }
    }

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

    @Before("com.bjsxt.test.Demo.demo1()")注解代表当前方法是前置通知,@Before注解中的值时切点的全路径

    package com.airplan.pojo;
    
    import org.aspectj.lang.ProceedingJoinPoint;
    import org.aspectj.lang.annotation.Aspect;
    import org.aspectj.lang.annotation.Before;
    import org.springframework.stereotype.Component;
    
    @Component("advice")
    @Aspect
    public class Advice {
        
            @Before("com.airplan.pojo.PointCutClass.pointCutFun()")
            public void mybefore(String name){
                System.out.println("前置"+name );
                System.out.println("before");
            }
            
            
            
    }
  • 相关阅读:
    mysqldump 导出数据库为DBname的表名为Tname的表结构 导出数据库的所有表的表结构
    mysqldump 备份某张表 Warning: A partial dump from a server that has GTIDs will by default include the GTIDs of all transactions,
    nfs missing codepage or helper program, or other error
    date 增加一个小时 减少一个小时
    mysqldump 备份单个数据库
    mysql删除账户
    怎么删除某个用户的所有帖子?
    mongodb删除重复数据
    ReSharper2018破解详细方法
    激活windows和office
  • 原文地址:https://www.cnblogs.com/cplinux/p/9742096.html
Copyright © 2011-2022 走看看