2011-06-25 96 views
4

我正在用春天讓我的腳溼潤。我下載了STS,我正在使用Spring in Action第二版的基本示例。我試圖實現基本的AOP時被卡住了,我想我只是在我的項目中缺少一些特定的庫。STS中缺少Spring AOP庫

我這麼說是因爲像@Aspect這樣的註釋在我的類中沒有被識別,就像我在xml中的<aop:config>也沒有被識別。

這是我的Maven依賴:

  • 的junit-4.7.jar
  • 彈簧試驗3.0.2.RELEASE.jar
  • 彈簧上下文3.0.2.RELEASE.jar
  • 彈簧AOP-3.0.2.RELEASE.jar
  • aopalliance-1.0.jar
  • 彈簧豆-3.0.2.RELEASE.jar
  • 彈簧芯3.0.2.RELEASE.jar
  • 共享記錄-1.1.1.jar
  • 彈簧表達-3.0.2.RELEASE.jar
  • 彈簧-ASM-3.0.2.RELEASE的.jar
  • 的log4j-1.2.14.jar

請讓我知道什麼庫我失蹤,在哪裏可以找到他們。

謝謝!

編輯:

以下:

<bean id="performancePointcut" 
     class="org.springframework.aop.aspectj.AspectJExpressionPointcut" > 
    <property name="expression" value="execution(* Performer+.perform(..))" /> 
</bean> 

拋出以下異常:

Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'performancePointcut' defined in file [C:\Users\Prova\Documents\STS\SpringIdol3\src\main\resources\META-INF\spring\spring-idol.xml]: Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: org/aspectj/weaver/reflect/ReflectionWorld$ReflectionWorldException

DONE!

aspectj-annotation-tutorial做了與步驟1,2的工作,和3

這是一個有趣的星期五晚上....

回答

13

把這些依賴於你的pom.xml:

<dependency> 
     <groupId>org.aspectj</groupId> 
     <artifactId>aspectjrt</artifactId> 
     <version>1.6.11</version> 
    </dependency> 
    <dependency> 
     <groupId>org.aspectj</groupId> 
     <artifactId>aspectjweaver</artifactId> 
     <version>1.6.11</version> 
    </dependency> 
+0

嗨abalogh。我通過項目屬性/ java構建的路徑/庫/添加外部罐子來在STS中添加庫。這是相同的事情還是有一個特定的原因,爲什麼我應該在pom.xml中添加這些依賴關係?謝謝! – Gevorg

+0

你寫過關於'Maven依賴關係' - 我假設你使用的是Maven。如果是這樣,你不應該手動添加jar包到classpath中,出於某種原因,當你使用Maven構建時,那些將不會包含在你的二進制文件中。 – abalogh

2

您可以添加Maven依賴:

<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-aspects</artifactId> 
    <version>4.2.4.RELEASE</version> 
</dependency>