• 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");
            }
            
            
            
    }
  • 相关阅读:
    macOS下iTerm2+zsh+oh-my-zsh+powerlevel10k打造最强终端
    个别服务器通过公网登录MySQL数据库慢
    Linux永久添加静态路由
    mtr网络工具常用命令
    Fping常用的网络连通性测试技巧
    Linux 7修改网卡名称后配置文件中的默认网关不生效
    Mac TimeMachine备份数据到自建NAS(通过samba共享)
    Mac iTerm2使用lrzsz
    SSH登录服务器慢
    Linux服务器惨遭挖矿
  • 原文地址:https://www.cnblogs.com/cplinux/p/9742096.html
Copyright © 2020-2023  润新知