2013-02-16 37 views
-1

有些怀疑我leargnin AOP在Spring框架在本教程中学习:http://www.tutorialspoint.com/spring/schema_based_aop_appoach.htm关于Spring AOP例如

不同于以前的教程中,我没有手动添加需要的jar文件的文件,但我使用Maven。

起初我已经加入我的pom.xml这个依赖(除了那些与弹簧芯,弹簧豆,春天上下文,弹簧上下文支持Spring模块)

<dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-aop</artifactId> 
     <version>3.1.1.RELEASE</version> 
    </dependency> 

但是,以这种方式不工作,我提出以下异常:抛出java.lang.ClassNotFoundException:

所致org.aspectj.weaver.reflect.ReflectionWorld $ ReflectionWorldException

阅读在线订购NE我已经找到了解决办法:我要在我的pom.xml中添加这两个依赖:

<dependency> 
     <groupId>org.aspectj</groupId> 
     <artifactId>aspectjtools</artifactId> 
     <version>1.6.2</version> 
    </dependency> 

    <dependency> 
     <groupId>cglib</groupId> 
     <artifactId>cglib</artifactId> 
     <version>2.2</version> 
    </dependency> 

所以现在我有两个疑问:

  1. 为什么我要补充这个组织。 aspectj.aspectjtools依赖如果我还没有org.springframework.spring-aop? (另外...我注意到我可以删除org.springframework.spring-aop,这个不用) 他们之间有什么区别?

  2. 为什么我必须添加cglib dependecies? 我知道,当我使用@Configuration和@Bean等注释时,我必须使用cglib ...但为什么我需要这种依赖关系,在这种情况下没有这些注释?

TNX 安德烈

回答

0

你可以在你的pom.xml使用了aopalliance,而不是CGLIB和aspectjrt & aspectjweaver依赖。我使用和建议的是编译团队使用Maven aspectj-maven-plugin编译目标代码。

至于你的问题,Spring AOP本身并不能测试你的目标代码。它在幕后使用AspectJ来做到这一点。 CGLib用于生成动态代理等。如果您需要动态生成接口并将其应用于您的建议,CGLib可以提供帮助。休眠大量使用CGLib