热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Java框架springAOP(简单了解与常见小错误)

AOP的全称是“AspectOrientedProgramming”,即面向切面编程,它将业务逻辑的各个部分进行隔离,使开发人员在编写业务逻辑时可以专心于核心业务,从而提高了开发效

AOP 的全称是“Aspect Oriented Programming”,即面向切面编程,它将业务逻辑的各个部分进行隔离,使开发人员在编写业务逻辑时可以专心于核心业务,从而提高了开发效率。

面向切面编程(AOP)和面向对象编程(OOP)类似,也是一种编程模式。

AOP 采取横向抽取机制,取代了传统纵向继承体系的重复性代码,其应用主要体现在事务处理、日志管理、权限控制、异常处理等方面。

目前最流行的 AOP 框架有两个,分别为 Spring AOP 和 AspectJ。

  • Spring AOP 使用纯 Java 实现,不需要专门的编译过程和类加载器,在运行期间通过代理方式向目标类植入增强的代码。
  • AspectJ 是一个基于 Java 语言的 AOP 框架,从 Spring 2.0 开始,Spring AOP 引入了对 AspectJ 的支持。AspectJ 扩展了 Java 语言,提供了一个专门的编译器,在编译时提供横向代码的植入。

Spring AOP 是基于 AOP 编程模式的一个框架,它的使用有效减少了系统间的重复代码,达到了模块间的松耦合目的。

在面向切面编程的思想里面,把功能分为核心业务功能,和周边功能。周边功能在Spring的面向切面编程AOP思想里,被定义为切面,

  • 核心业务,比如登陆,增加数据,删除数据都叫核心业务
  • 周边功能,比如性能统计,日志,事务管理等等

核心业务功能和切面功能分别独立进行开发,然后把切面功能和核心业务功能 "编织" 在一起,

//常见术语
Joinpoint(连接点) 指那些被拦截到的点,在 Spring 中,可以被动态代理拦截目标类的方法。 Pointcut(切入点) 指要对哪些 Joinpoint 进行拦截,即被拦截的连接点。 Advice(通知) 指拦截到 Joinpoint 之后要做的事情,即对切入点增强的内容。 Target(目标) 指代理的目标对象。 Weaving(植入) 指把增强代码应用到目标上,生成代理对象的过程。 Proxy(代理) 指生成的代理对象。 Aspect(切面) 切入点和通知的结合。

 

一、简单小项目

1、业务类

Java 框架   -------     spring AOP(简单了解与常见小错误)

 

2、日志类

JointPoint是程序运行过程中可识别的点,这个点可以用来作为AOP切入点。JointPoint对象则包含了和切入相关的很多信息。比如切入点的对象,方法,属性等。我们可以通过反射的方式获取这些点的状态和信息,用于追踪tracing和记录logging应用信息。

pointcut 是一种程序结构和规则,它用于选取join point并收集这些point的上下文信息。
pointcut通常包含了一系列的Joint Point,我们可以通过pointcut来同时操作jointpoint。单从概念上,可以把Pointcut当做jointpoint的集合。

 Java 框架   -------     spring AOP(简单了解与常见小错误)

   java.lang.Object[] getArgs():获取连接点方法运行时的入参列表; 
   Signature getSignature() :获取连接点的方法签名对象; 
   java.lang.Object getTarget() :获取连接点所在的目标对象; 
   java.lang.Object getThis() :获取代理对象本身; 

3、applicationContext.xml

aop 在 xml 中的相关配置

    
        ref="myAspect">
            
            "execution ( * com.mengma.dao.*.* (..))"
                id="myPointCut" />
            
            "myBefore" pointeut-ref="myPointCut" />
            
            "myAfterReturning"
                pointcut-ref="myPointCut" returning="returnVal" />
            
            "myAround" pointcut-ref="myPointCut" />
            
            
            
            "myAfterThrowing"
                pointcut-ref="myPointCut" throwing="e" />
            
            "myAfter" pointcut-ref="myPointCut" />
        
    

我们需要用到的如下

Java 框架   -------     spring AOP(简单了解与常见小错误)

 

4、测试

Java 框架   -------     spring AOP(简单了解与常见小错误)

 

二、注意报错:

1、发现了以某某开头的无效内容

Java 框架   -------     spring AOP(简单了解与常见小错误)

 调整aop:pointcut  与 aop:aspect 的位置

Java 框架   -------     spring AOP(简单了解与常见小错误)

2、java.lang.IllegalArgumentException: Pointcut is not well-formed: expecting 'name pattern' at character position 46

Java 框架   -------     spring AOP(简单了解与常见小错误)

分开后就好了

Java 框架   -------     spring AOP(简单了解与常见小错误)

 3、 java.lang.IllegalArgumentException: 

Java 框架   -------     spring AOP(简单了解与常见小错误)

 

 找不到,注意要指到类

Java 框架   -------     spring AOP(简单了解与常见小错误)

 


推荐阅读
author-avatar
520那孩HAPPY
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有