java aspectj是什么,讓我們一起了解一下?
AspectJ是一個基于Java語言的AOP框架,提供了強大的AOP功能,擴展了Java語言,它有一個專門的編譯器用來生成遵守Java字節(jié)編碼規(guī)范的Class文件。
為什么aspectj類型間聲明很重要?
AspectJ的類型間聲明指的是那些跨越類和它們的等級結(jié)構(gòu)的聲明。考慮一下,Java語言中如何向一個一些的類中加入新方法,這需要實現(xiàn)一個特定接口,所有類都必須在各自內(nèi)部實現(xiàn)接口聲明的方法,而使用AspectJ則可以將這些工作利用類型間聲明放在一個方面中。這個方面聲明方法和字段,然后將它們與需要的類聯(lián)系。
假設(shè)我們想有一個Sreen對象觀察Point對象的變化,當(dāng)Point是一個存在的類。我們可以通過書寫一個方面,由這個方面聲明Point對象有一個實例字段observers,用來保存所有觀察Point對象的Screen對象的引用,從而實現(xiàn)這個功能。
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?
模擬一個普通程序:
服務(wù)類UserService: public?class?UserService{ ????public?int?addUser(){ ????????System.out.println("模擬添加用戶的方法。"); ????????return?20;????} ????public?void?validateLogin(){????????System.out.println("驗證用戶登錄。");????}} 服務(wù)類BookServce: public?class?BookService{ ????public?int?addBook(String?name,int?price){ ????????System.out.println("正在添加圖書,書名是:"+name+",價格是:"+price); ????????return?100; ????}}
以上就是小編今天的分享了,希望可以幫助到大家。