zoukankan      html  css  js  c++  java
  • Spring课程 Spring入门篇 7-1 AspectJ介绍及PointCut注解应用

    课程链接:

    本节主要是理论型:

    关键看下节实操。

    1    Aspectj是什么

    2    如何在Spring中配置@AspectJ

    3    组合pointcut的使用

    4    切入点支持哪些定义方式

    n    aspect java 注解实现要点(不重要)

    1   Aspectj是什么

    AspectJ是一个面向切面的框架。它可以用Java注解的风格进行aop编程。它有一个专门的编译器用来生成遵守Java字节编码规范的Class文件。

    2    如何在Spring中配置@AspectJ

    2.1  引入aspectjweaver.jar包的依赖(1.68或1.6.8之上)

    2.2  xml中如下配置

    <aop:aspectj-autoproxy></aop:aspectj-autoproxy>

    或者java中如下配置

    @Configuration
    @EnableAspectJAutoProxy
    public class AppConfig{
    
    )

    3    组合pointcut的使用

    @Pointcut("execution(public*(..))")
    private void anyPublicOperation(){}
    @Pointcut(
    "within(com.xyz.someapp.trading.…)") private void inTrading(){)
    @Pointcut(
    "anyPublicOperation() && inTrading()") private void tradingOperation(){}

    4    切入点支持哪些定义方式

    execution 匹配方法执行的连接点
    within限定匹配特定类型的连接点
    this匹配特定连接点的bean引用是指定类型的实例的限制
    target限定匹配特定连接点的目标对象是指定类型的实例
    args限定匹配特定连接点的参数是给定类型的实例
    @target限定匹配特定连接点的类执行对象的具有给定类型的注解
    @args 限定匹配特定连接点实际传入参数的类型具有给定类型的注解
    @within限定匹配到内具有给定的注释类型的连接点
    @annotation 限定匹配特定连接点的主体具有给定的注解

    n    aspect java 注解实现要点(不重要)

    @AspectJ切面使用@Aspect注解配置,拥有@Aspect的任何bean将被Spring自动识别并应用
    用@Aspect注解的类可以有方法和字段,他们也可能包括切入点(pointcut),通知(Advice)和引入(introduction)声明

    @Aspect注解是不能够通过类路径自动检测发现的,所以需要配合使用@Component注释或者在xml配置bean

    切面所在类不要在xml中扫描

    Spring AOP中,不可能有切面自己本身还被其它的切面作为目标通知。用@Aspect注解标注一个类作为切面,因此需要将它自己本身从自动代理中排除。

     什么意思呢?举个例子,比如

    package com.cjs.aspect

     @Aspect

     @Component

    public class LogAspect {

      @Pointcut(“execution(* com.cjs..*(..))”)

      public void pointcut() {}

    }

    在这个例子中,切面LogAspect所在的位置是com.cjs.aspect,而它的切入点是com.cjs下的所有的包的所类的所有方法,这其中就包含LogAspect,这是不对的,会造成循环依赖。在SpringBoot中这样写的话启动的时候就会报错,会告诉你检测到循环依赖。

     

  • 相关阅读:
    was控制台误禁用后的恢复启用办法
    Linux升级内核教程(CentOS7)
    ifcfg-eth配置详解(CentOS6)
    CentOS7和CentOS6的区别
    ftp/sftp定时自动上传文件脚本(CentOS)
    AIX安装JDK1.7教程
    PE文件结构解析
    ffmpeg+libmp3lame库源码安装教程(CentOS)
    kafka安装使用教程
    Weblogic禁用SSLv3和RC4算法教程
  • 原文地址:https://www.cnblogs.com/1446358788-qq/p/10778467.html
Copyright © 2011-2022 走看看