2013-11-26 47 views
1

我想通過一個LTW aop.xml文件來定義一個繼承的具體方面,但似乎沒有什麼 發生。AspectJ與aop.xml

這裏是我的代碼:

我的主要方法:

package example;  

public class Farm { 

static Cat cat = new Cat(); 
static Cow cow = new Cow(); 
static Dog dog = new Dog(); 
static Fox fox = new Fox(); 

public static void main(String args[]){ 
    System.out.println(cat.talk(1)); 
    System.out.println(dog.talk(1)); 
    System.out.println(cow.talk(1)); 
    System.out.println(fox.talk(1)); 
} 
} 

福克斯CALSS:

package example; 

public class Fox extends Animal{ 

public String talk(int i) { 
    return "DING DING!!!"; 
} 
} 

我的抽象方面:

package example; 

public abstract aspect MyAspect { 
protected abstract pointcut scope(); 

before() : scope() { 
    System.out.println("Before"); 
} 
} 

我aop.xml文件文件:

<aspectj> 
    <aspects> 
    <aspect name="example.MyAspect"/> 
     <concrete-aspect 
      name="example.MyConcreteAspect" 
      extends="example.MyAspect" 
     > 
      <pointcut 
       name="scope" 
       expression="execution(public String example.Fox.talk(int))" 
      /> 
     </concrete-aspect> 
    </aspects> 
</aspectj> 

最後,我的輸出:

MEW 
WOOF 
MOO 
DING DING!!! 

隨着前沒有 「之前」 印 「叮叮!」

任何想法我做錯了什麼? 我已經下載了一個工作示例,並且似乎在我的計算機上配置爲 ...

+0

你(如果有的話)是如何配置LTW?運行JVM/webserver時需要指定一個特殊的類加載器(代理)。 –

回答

3

必須在運行配置中將我的VM參數更改爲指向aspectj-weaver.jar。 無論如何,謝謝。希望這可以幫助任何人。

0

要運行沒有彈簧的AOP,您需要從IDE配置虛擬機參數-javaagent

與Maven可以配置一個簡單的JUnitØ像這樣運行:

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.9</version> 
      <configuration> 
       <argLine> 
        -javaagent:${settings.localRepository}\org\aspectj\aspectjweaver\1.8.10\aspectjweaver-1.8.10.jar 
       </argLine> 
      </configuration> 
     </plugin> 
    </plugins> 
</build>