java基於AspectJ(面向切面編程)編碼樣本分享_java

來源:互聯網
上載者:User

一、基本概念

AspectJ是一種面向切面程式設計的基於Java 的實現。它向 Java 中加入了連接點(Join Point)這個新概念,其實它也只是現存的一個 Java概念的名稱而已。它向 Java 語言中加入少許新結構:切點(pointcut)、通知(Advice)、類型間聲明(Inter-type declaration)和方面(Aspect)。切點和通知動態地影響程式流程,類型間聲明則是靜態影響程式的類等級結構,而切面則是對所有這些新結構的封裝。

基於切面、連接點、切點、通知的概念如下:

Aspect: Aspect 聲明類似於 Java 中的類聲明,在 Aspect 中會包含著一些 Pointcut 以及相應的 Advice。
Joint point:表示在程式中明確定義的點,典型的包括方法調用,對類成員的訪問以及例外處理常式塊的執行等等,它自身還可以嵌套其它 joint point。
Pointcut:表示一組 joint point,這些 joint point 或是通過邏輯關係組合起來,或是通過通配、Regex等方式集中起來,它定義了相應的 Advice 將要發生的地方。
Advice:Advice 定義了在 pointcut 裡面定義的程式點具體要做的操作,它通過 before、after 和 around 來區別是在每個 joint point 之前、之後還是代替執行的代碼。
連接點是程式流中適當的一點。切點收集特定的連接點集合和在這些點中的值。一個通知是當一個連接點到達時執行的代碼,這些都是 AspectJ的動態部分。其實連接點就好比是程式中的一條一條的語句,而切點就是特定一條語句處設定的一個斷點,它收集了斷點處程式棧的資訊,而通知就是在這個斷點前後想要加入的程式代。AspectJ 中也有許多不同種類的類型間聲明, 這就允許程式員修改程式的靜態結構、 名稱、 類的成員以及類之間的關係。AspectJ 中的方面是橫切關注點的模組單元。它們的行為與 Java語言中的類很象,但是方面還封裝了切點、通知以及類型間聲明

二、如何基於AJDT: AspectJ Development Tools進行AOP程式的開發?

按照ajdt網站上的說明,在eclipse中安裝ajdt外掛程式http://www.eclipse.org/ajdt/
建立AspectJ Project項目
進行代碼開發(本文提供一個簡單的樣本)

三、簡單樣本:

複製代碼 代碼如下:

package aop.test;

public interface FigureElement {
 public void setXY(int x,int y);
 public void draw();
}

複製代碼 代碼如下:

package aop.test;

public class Point implements FigureElement {

 public int x;
 private int y;

 public int getX() {
  return x;
 }

 public String setX(int x) {
  System.out.println("設定x值:x="+x);
  this.x = x;
  return "傳回值是x="+x;
 }

 public int getY() {
  return y;
 }

 public void setY(int y) {
  this.y = y;
 }

 public Point(){

 }

 public Point(int x,int y){
  this.x=x;
  this.y=y;
 }

 @Override
 public void setXY(int x,int y) {
  this.x=x;
  this.y=y;
  System.out.println("Point setXY: x="+x+",y="+y);
 }

 @Override
 public void draw() {
  System.out.println("Point draw");
 }

 @Override
 public String toString(){
  return "Point: x="+x+",y="+y;
 }
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.