`

Aspectj晋级(一)

AOP 
阅读更多

      自从接触到AOP设计以来,它的力量一直令我折服;再进一步学习AspectJ,它的魅力总能使我的瞳孔放大数倍。我常给好友开玩笑的这样比喻:

      她像一个美少女般的温柔,让我们多了一种对付软件的复杂和需求的巨变的美人计。所以记录一下我和这位“美女”相处的点滴。

      现在从简单开始,就像是你与美女相处~~~~~   刚见面还是慢慢深入

      一个简单的程序:

 public class Ajtest {
 
 String show = "";
 
 public Ajtest(){
  
 }
 
 public void setMessage1(){
  show = "message1";

  show();
 }
 
 public void setMessage2(){
  show = "message2";

  show();
 }
 
 protected void show(){
  System.out.println(show);
 }
 
 public static void main(String[] args){
  Ajtest test = new Ajtest();
  test.setMessage1();
  test.setMessage2();
 }
}

 

      明显我要对加红色的字体加以处理,原因或者是随着类中的set方法的添加,我还要在新方法中加show()调用,又或者是随着需求变动:现在不但是要输出变量还要把变量持久化。抛开废话还是先看看怎么来搞吧??

~~卡卡~~

 

public aspect Ajtest_aj{

 

 // 定义一个切入点为调用Ajtest类的任意参数任意返回值的show方法。

 pointcut show() : call(* Ajtest.show(..));

 

// 定义一个警告信息,意思已经在下面了。

 declare warning : show() && !within(Ajtest_aj) : "不能在从AJ以为的所有地方调用Ajtest类的show方法。";

 

// 定义一个切入点,该切入点是执行Ajtest实体的set方法,并返回test实体

pointcut replateClassShow(Ajtest test) : execution(* set*(..)) && this(test);

 

// 在切入点后执行,实体test的show()方法。

after(Ajtest test) returning : replaceClassShow(test) {

   test.show();

}

}

 

复习词汇:this(Type)当前执行的对象是类型的实例时匹配连接点。

               target(Type)目标对象是类型的实例时匹配连接点。

 

 

分享到:
评论

相关推荐

    aspectj-1.9.6.jar

    AspectJ是Java平台上的一种面向切面编程(AOP)框架,它允许开发者将关注点分离,提高代码的可维护性和可复用性。AspectJ 1.9.6.jar文件是AspectJ库的核心组成部分,它是开发者在Java环境中实现AOP的关键依赖。 ...

    Spring AspectJ的学习一

    AspectJ是AOP领域的一个强大工具,它扩展了Java语言,允许开发者创建所谓的"切面",来封装横切关注点,如日志、事务管理等,从而使代码更清晰、更模块化。本文将深入探讨如何在Spring框架中集成AspectJ,以及如何...

    精通AspectJ_源代码

    AspectJ是一种强大的面向方面的编程(AOP)框架,它扩展了Java语言,使得开发者能够更方便地处理系统中的横切关注点,如日志、事务管理、安全性等。本资源包含的是《精通AspectJ》一书中的示例代码,通过这些代码,...

    Aspectj

    AspectJ是一种广泛使用的Java语言的面向切面编程(AOP)扩展。它允许开发者将关注点模块化,使得系统中的交叉切面(如日志、事务管理、安全性等)可以独立于核心业务逻辑进行处理。本指南将深入探讨AspectJ的核心概念...

    aspectJ

    【AspectJ】是一种强大的面向切面编程(AOP)框架,它允许开发者在Java应用程序中进行声明式的横切关注点编程。AOP的核心思想是将系统中的横切关注点(如日志、事务管理、权限控制等)与业务逻辑分离,以提高代码的...

    动手写一个AspectJ的gradle插件

    在本文中,我们将深入探讨如何动手编写一个基于AspectJ的Gradle插件。AspectJ是一种强大的面向切面编程(AOP)框架,它允许我们分离关注点,将横切关注点(如日志、事务管理)与核心业务逻辑解耦。而Gradle则是一个...

    aspectj-1.6.9.jar

    AspectJ 是一个强大的面向切面编程(AOP)的框架,它允许开发者在Java应用程序中分离关注点,将横切逻辑(如日志、事务管理、安全性等)与核心业务逻辑相分离。`aspectj-1.6.9.jar` 是AspectJ框架的一个特定版本,即...

    Aop之AspectJ详解解读demo

    AspectJ是Java平台上的一个开源AOP框架,它提供了一种强大的语言级支持来实现切面。本文将深入探讨AspectJ的使用、框架结构及其应用场景,并通过一个入门实例进行详细解释。 **一、AspectJ简介** AspectJ是一个...

    AspectJ的JAR包

    AspectJ是一种强大的面向切面编程(AOP)框架,它扩展了Java语言,允许开发者在不改变原有代码结构的情况下,插入关注点代码。在Spring AOP框架中,AspectJ被广泛用于实现更精细粒度的切面逻辑,提供比Spring默认的...

    org.aspectj,aspectj项目库(org.aspectj).zip

    AspectJ是一种强大的面向切面编程(AOP)框架,它扩展了Java语言,允许程序员以声明式方式处理系统的横切关注点,如日志、事务管理、性能监控等。这个压缩包可能包含了AspectJ的完整源代码,方便开发者进行学习、...

    aspectj jar

    AspectJ是一个强大的、成熟的库,它扩展了Java语言,允许开发者定义和执行切面,这是一种分离关注点的方式,使得业务逻辑与横切关注点(如日志、事务管理或权限控制)可以独立编写和维护。 标题"aspectj jar"指的是...

    aspectj-1.7.0.jar

    aspectj-1.7.0.jar aspectj的包

    AspectJ面向切面的例子

    标题"AspectJ面向切面的例子"指的是通过AspectJ实现的一个实际项目,这个例子是一个名为"Spacewar"的小游戏。在"Spacewar"游戏中,我们可以看到AspectJ如何被用来处理游戏中的各种横切关注点,比如游戏状态记录、...

    AspectJ 文档

    AspectJ是一个功能强大的面向切面编程(AOP)框架,它允许开发者以声明的方式在Java程序中定义横切关注点(cross-cutting concerns),如日志记录、事务管理等。AOP通过引入切面(aspects)来模块化这些关注点,而切...

    spring aspectj.jar

    在Spring中使用AspectJ,我们通常有两种方式:一种是使用AspectJ的编译时或加载时织入,这需要配置AspectJ的编译器或加载器;另一种是通过Spring的注解驱动的AOP,它利用AspectJ的编译器或 weaving工具来生成代理类...

    book :aspectj in action

    《AspectJ in Action》是一本深入探讨面向切面编程(Aspect-Oriented Programming, AOP)的权威书籍,由Eric Evans和Manning Publications在2003年出版。该书详细介绍了AspectJ这一强大的Java语言扩展,它允许开发者...

    AspectJ in Action 2nd Edition

    - **AspectJ简介**:AspectJ是一种面向切面编程(AOP)语言,它扩展了Java语言,提供了一种更强大的方式来处理那些在传统的面向对象编程中难以管理的“横切关注点”。本书《AspectJ in Action》第二版全面地介绍了...

    Android Studio AspectJ技术1

    AspectJ 是一种面向 Aspect 编程语言,用于在 Java 语言中实现面向方面编程。AspectJ 可以帮助开发者更好地理解和优化 Android 应用程序的性能和行为。在 Android Studio 中使用 AspectJ 可以实现多种功能,例如分析...

    AspectJ_Cookbook_English_edition

    《AspectJ Cookbook》是一本专为开发者准备的指南,它深入介绍了AspectJ这一强大的面向切面编程(AOP)框架。面向切面编程是一种编程范式,旨在提高软件的可维护性和可重用性,通过将关注点分离,使得业务逻辑与系统...

Global site tag (gtag.js) - Google Analytics