AspectJ学习笔记[03]

方面

方面的定义如下:

[access specification] aspect <AspectName>

[extends class-or-aspect-name]

[implements interface-list]

[<association-specifier>(Pointcut)] {

... aspect body

}

关键字aspect申明了一个方面。每一个方面都有一个名字,程序中其他部分可以使用该名字来访问该方面。方面可以定义个访问规格、扩展一个方面或类、实现一个接口。方面体内包含了表示横切规则的代码。通知、引导、和编译时申明能够被定义在方面内。切点可以被定义在类、接口、以及方面内,在方面内的切点可以有一个访问规格,可以被申明为抽象的。而其他的通知、引导、和编译时申明不能含有访问规格。


方面和类之间类似之处:

方面可以包含数据成员和方法;

方面可以包含一个访问规格;

方面可以将自身申明为抽象的;

public abstract aspect AbstractLogging {

    public abstract pointcut logPoints(); <- 抽象的切点

    public abstract Logger getLogger(); <- 抽象的方法

    before() : logPoints() {

        getLogger().log(Level.INFO, "Before: " + thisJoinPoint);

    }

}

方面可以扩展类或抽象方面,也同样可以实现接口;

public aspect BankLogging extends AbstractLogging {

    public pointcut logPoints() : call(* banking..*(..));

    public Logger getLogger() {

        return Logger.getLogger("banking");

    }

}

方面可以被包含在类或接口中作为内嵌的方面;

方面和类之间的不同之处:

方面不能直接地被实例化;

方面不能继承具体的一个方面;

方面具有一些特殊的访问权限;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值