当前位置:科普知识站>IT科技>

java|aspectj

IT科技 阅读(2.33W)

<link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>

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

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

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

AspectJ的类型间声明指的是那些跨越类和它们的等级结构的声明。考虑一下,Java语言中如何向一个一些的类中加入新方法,这需要实现一个特定接口,所有类都必须在各自内部实现接口声明的方法,而使用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;    }}