我想做的事:
- 我想将 @Configured 注释与 Spring 一起使用。它需要启用 AspectJ。我认为使用 AJDT 插件进行编译时编织可以解决这个问题。在安装插件之前,应该注入我的 @Configured 对象的依赖项保持为空。
我做了什么:
- 为 Eclipse 3.4安装了AJDT:AspectJ 开发工具插件。
- 右键单击我的 web 项目并将其转换为 AspectJ 项目。
- 启用编译时编织。
什么不起作用:
- 当我现在启动 Tomcat 6 服务器时,我得到一个异常*。
其他信息:
- 我没有在项目属性的 AspectJ Build 和 AspectJ Compiler 部分中配置任何内容。
- 首选项下的 JDT Weaving 表示启用了编织。
- 我仍然在项目属性下有 Java 构建路径和 Java 编译器。而且它们看起来就像我之前配置的一样(而上面的两个新条目没有配置)。
- 我的@Configured 对象文件的图标看起来像任何其他文件(即没有任何方面的指示,我认为应该有)。文件名是 MailNotification.java(而不是 .aj),但我想它应该仍然可以工作,因为我正在为 AspectJ 使用 Spring 注释?
- 我还没有找到任何教程或类似的教程:如何将 Spring Web 应用程序项目转变为 AspectJ 项目并使用 AJDT 插件将方面编织到文件中,所有这些都在 Eclipse 3.4 中。如果那里有类似的东西,我会非常有兴趣了解它。
我想知道的:
- 然后去哪儿?我只想使用Spring的@Configured注解。我也在使用@Transactional,我认为它也需要AspectJ。
- 如果可能的话,只要满足我的需求,我想尽可能少地学习 AspectJ。这个主题看起来很有趣,但是很大,我想做的就是使用上面提到的两个 Spring 注释。
*** Tomcat 6 启动时的异常:
Caused by: java.lang.IllegalStateException: ClassLoader [org.apache.catalina.loader.WebappClassLoader] does NOT provide an 'addTransformer(ClassFileTransformer)' method. Specify a custom LoadTimeWeaver or start your Java virtual machine with Spring's agent: -javaagent:spring-agent.jar
at org.springframework.context.weaving.DefaultContextLoadTimeWeaver.setBeanClassLoader(DefaultContextLoadTimeWeaver.java:82)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1322)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473)
... 41 more