java aspectj

作者:原创时间:2022-03-24
文档

java aspectj是什么,让我们一起了解一下?

AspectJ是一个基于Java语言的AOP框架,提供了强大的AOP功能,扩展了Java语言,它有一个专门的编译器用来生成遵守Java字节编码规范的Class文件。

为什么aspectj类型间声明很重要?

AspectJ的类型间声明指的是那些跨越类和它们的等级结构的声明。考虑一下,Java语言中如何向一个一些的类中加入新方法,这需要实现一个特定接口,所有类都必须在各自内部实现接口声明的方法,而使用AspectJ则可以将这些工作利用类型间声明放在一个方面中。这个方面声明方法和字段,然后将它们与需要的类联系。

假设我们想有一个Sreen对象观察Point对象的变化,当Point是一个存在的类。我们可以通过书写一个方面,由这个方面声明Point对象有一个实例字段observers,用来保存所有观察Point对象的Screen对象的引用,从而实现这个功能。

Aspect PointObserving{
Private Collection Point.observers=new ArrayList();
……
}
observers字段是私有字段,只有PointObserving能使用。因此,要在aspect中加入方法管理observers聚集。
Aspect PointObserving{
Private Collection Point.observers=new ArrayList();
Public static void addObserver(Point p,Screen s){
p.observers.add(s);
}
public static void removeObserver(Point p,Screen s){
p.observers.remove(s);
}
……
}

那么如何使用AspectJ?

模拟一个普通程序:

服务类UserService:
public class UserService{
    public int addUser(){
        System.out.println("模拟添加用户的方法。");
        return 20;    }
    public void validateLogin(){        System.out.println("验证用户登录。");    }}
服务类BookServce:
public class BookService{
    public int addBook(String name,int price){
        System.out.println("正在添加图书,书名是:"+name+",价格是:"+price);
        return 100;
    }}

以上就是小编今天的分享了,希望可以帮助到大家。

显示全文
java aspose java assembly java async win10专业版和企业版的区别 java bacnet java barrier java base64 java base64decoder java bean 手机充电时可以玩手机吗 手机充电发热发烫是什么原因 java beanutils java benchmark java bigdecimal excel表格怎么合并单元格 java binary java binder win10c盘满了怎么清理 java binlog 如何清理win10电脑c盘 java asmx java ascii java arrays.sort java args java arctan java arccos java arcsin java archive java apriori java application java append 苹果13蓝牙搜索不到设备怎么办 java apns java ant java annotation java android iphone呼叫失败是什么原因 java algorithm ipad2是哪年的 java akka