初探AspectJ(Java面向方面技术)

本文通过具体的示例代码展示了如何使用AspectJ实现AOP编程。包括了不同的切入点定义方式,如调用(call)、执行(execution)及通知(adviceexecution),并通过实际运行结果验证了这些切入点的应用效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

AspectJ的Eclipse插件下载:http://www.eclipse.org/aspectj/downloads.php

测试代码如下:

普通的Java类:

package  demo;

public   class  MyClass  {

    
public void foo(int number, String name){
        System.out.println(
"Inside foo (int, String)");
    }

    
    
public static void main(String[] args) {
        MyClass myObject 
= new MyClass();
        myObject.foo(
1"Russ Miles");
    }

}

aspectj类:

HelloWorld.aj

package  demo;

public  aspect HelloWorld  {

    pointcut calPointcut() :
        call (
void demo.MyClass.foo(int, String));
    
    before() : calPointcut()
{
        System.out.println(
"aspect call");
    }

}

ExecutionRecipe.aj

package  demo;

public  aspect ExecutionRecipe  {

    pointcut executionPointcut() : 
        execution (
void demo.MyClass.foo(int, String));
    
    before() : executionPointcut()
{
        System.out.println(
"aspect execution");
    }

}

AdviceExecutionRecipe.aj

package  demo;

public  aspect AdviceExecutionRecipe  {

    pointcut adviceexecutionPointcut() : adviceexecution();
    
    before() : adviceexecutionPointcut() 
&& !within(AdviceExecutionRecipe +){
        System.out.println(
"aspect adviceexecution");
    }

}

输出:

aspect adviceexecution
aspect call
aspect adviceexecution
aspect execution
Inside foo (int, String)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值