java aspectj

<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;    }}