亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

java基于AspectJ(面向切面編程)編碼示例分享

 更新時(shí)間:2014年02月16日 09:59:45   作者:  
AspectJ是一種面向切面程序設(shè)計(jì)的基于Java的實(shí)現(xiàn),下面對(duì)過(guò)示例學(xué)習(xí)他的使用方法,需要的朋友可以參考下

一、基本概念

AspectJ是一種面向切面程序設(shè)計(jì)的基于Java 的實(shí)現(xiàn)。它向 Java 中加入了連接點(diǎn)(Join Point)這個(gè)新概念,其實(shí)它也只是現(xiàn)存的一個(gè) Java概念的名稱而已。它向 Java 語(yǔ)言中加入少許新結(jié)構(gòu):切點(diǎn)(pointcut)、通知(Advice)、類(lèi)型間聲明(Inter-type declaration)和方面(Aspect)。切點(diǎn)和通知?jiǎng)討B(tài)地影響程序流程,類(lèi)型間聲明則是靜態(tài)的影響程序的類(lèi)等級(jí)結(jié)構(gòu),而切面則是對(duì)所有這些新結(jié)構(gòu)的封裝。

基于切面、連接點(diǎn)、切點(diǎn)、通知的概念如下:

Aspect: Aspect 聲明類(lèi)似于 Java 中的類(lèi)聲明,在 Aspect 中會(huì)包含著一些 Pointcut 以及相應(yīng)的 Advice。
Joint point:表示在程序中明確定義的點(diǎn),典型的包括方法調(diào)用,對(duì)類(lèi)成員的訪問(wèn)以及異常處理程序塊的執(zhí)行等等,它自身還可以嵌套其它 joint point。
Pointcut:表示一組 joint point,這些 joint point 或是通過(guò)邏輯關(guān)系組合起來(lái),或是通過(guò)通配、正則表達(dá)式等方式集中起來(lái),它定義了相應(yīng)的 Advice 將要發(fā)生的地方。
Advice:Advice 定義了在 pointcut 里面定義的程序點(diǎn)具體要做的操作,它通過(guò) before、after 和 around 來(lái)區(qū)別是在每個(gè) joint point 之前、之后還是代替執(zhí)行的代碼。
連接點(diǎn)是程序流中適當(dāng)?shù)囊稽c(diǎn)。切點(diǎn)收集特定的連接點(diǎn)集合和在這些點(diǎn)中的值。一個(gè)通知是當(dāng)一個(gè)連接點(diǎn)到達(dá)時(shí)執(zhí)行的代碼,這些都是 AspectJ的動(dòng)態(tài)部分。其實(shí)連接點(diǎn)就好比是程序中的一條一條的語(yǔ)句,而切點(diǎn)就是特定一條語(yǔ)句處設(shè)置的一個(gè)斷點(diǎn),它收集了斷點(diǎn)處程序棧的信息,而通知就是在這個(gè)斷點(diǎn)前后想要加入的程序代。AspectJ 中也有許多不同種類(lèi)的類(lèi)型間聲明, 這就允許程序員修改程序的靜態(tài)結(jié)構(gòu)、 名稱、 類(lèi)的成員以及類(lèi)之間的關(guān)系。AspectJ 中的方面是橫切關(guān)注點(diǎn)的模塊單元。它們的行為與 Java語(yǔ)言中的類(lèi)很象,但是方面還封裝了切點(diǎn)、通知以及類(lèi)型間聲明

二、如何基于AJDT: AspectJ Development Tools進(jìn)行AOP程序的開(kāi)發(fā)?

按照ajdt網(wǎng)站上的說(shuō)明,在eclipse中安裝ajdt插件http://www.eclipse.org/ajdt/
創(chuàng)建AspectJ Project項(xiàng)目
進(jìn)行代碼開(kāi)發(fā)(本文提供一個(gè)簡(jiǎn)單的示例)

三、簡(jiǎn)單示例:

復(fù)制代碼 代碼如下:

package aop.test;

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

復(fù)制代碼 代碼如下:

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("設(shè)置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;
 }
}

相關(guān)文章

  • Java 詳解單向加密--MD5、SHA和HMAC及簡(jiǎn)單實(shí)現(xiàn)實(shí)例

    Java 詳解單向加密--MD5、SHA和HMAC及簡(jiǎn)單實(shí)現(xiàn)實(shí)例

    這篇文章主要介紹了Java 詳解單向加密--MD5、SHA和HMAC及簡(jiǎn)單實(shí)現(xiàn)實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • 解決rocketmq-client日志保存路徑的問(wèn)題

    解決rocketmq-client日志保存路徑的問(wèn)題

    這篇文章主要介紹了解決rocketmq-client日志保存路徑的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • SpringBoot+Websocket實(shí)現(xiàn)一個(gè)簡(jiǎn)單的網(wǎng)頁(yè)聊天功能代碼

    SpringBoot+Websocket實(shí)現(xiàn)一個(gè)簡(jiǎn)單的網(wǎng)頁(yè)聊天功能代碼

    本篇文章主要介紹了SpringBoot+Websocket實(shí)現(xiàn)一個(gè)簡(jiǎn)單的網(wǎng)頁(yè)聊天功能代碼,具有一定的參考價(jià)值,有需要的可以了解一下
    2017-08-08
  • 詳解Android中的Toast源碼

    詳解Android中的Toast源碼

    這篇文章主要介紹了詳解Android中的Toast源碼,Toast使用Java語(yǔ)言實(shí)現(xiàn),需要的朋友可以參考下
    2015-07-07
  • java 回調(diào)機(jī)制的實(shí)例詳解

    java 回調(diào)機(jī)制的實(shí)例詳解

    這篇文章主要介紹了java 回調(diào)機(jī)制的實(shí)例詳解的相關(guān)資料,希望通過(guò)本文的示例能幫助到大家理解使用回調(diào)機(jī)制,需要的朋友可以參考下
    2017-09-09
  • Mybatis中連接查詢和嵌套查詢實(shí)例代碼

    Mybatis中連接查詢和嵌套查詢實(shí)例代碼

    這篇文章主要給大家介紹了關(guān)于Mybatis中連接查詢和嵌套查詢的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Springboot mybais配置多數(shù)據(jù)源過(guò)程解析

    Springboot mybais配置多數(shù)據(jù)源過(guò)程解析

    這篇文章主要介紹了Springboot+mybais配置多數(shù)據(jù)源過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • SpringBoot Web詳解靜態(tài)資源規(guī)則與定制化處理

    SpringBoot Web詳解靜態(tài)資源規(guī)則與定制化處理

    這篇文章主要介紹了SpringBoot web場(chǎng)景的靜態(tài)資源規(guī)則與定制化,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-06-06
  • 通過(guò)Java添加Word文本框過(guò)程詳解

    通過(guò)Java添加Word文本框過(guò)程詳解

    這篇文章主要介紹了通過(guò)Java添加Word文本框過(guò)程詳解,在Word中,文本框是指一種可移動(dòng)、可調(diào)節(jié)大小的文字或圖形容器。我們可以向文本框中添加文字、圖片、表格等對(duì)象,下面,將通過(guò)Java編程來(lái)實(shí)現(xiàn)添加以上對(duì)象到Word文本框,需要的朋友可以參考下
    2019-07-07
  • Java創(chuàng)建多線程的兩種方式對(duì)比

    Java創(chuàng)建多線程的兩種方式對(duì)比

    在Java中創(chuàng)建線程的方式有兩種,第一種是直接繼承Thead類(lèi),另一種是實(shí)現(xiàn)Runable接口。那么這兩種方式孰優(yōu)孰劣呢?這就是本文需要探討的內(nèi)容范疇了,看官們請(qǐng)仔細(xì)向下看
    2014-10-10

最新評(píng)論