Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Eclipse:如何将web项目转换为AspectJ项目,并使用AJDT插件编织和运行它?_Java_Eclipse_Spring_Spring Aop - Fatal编程技术网

Java Eclipse:如何将web项目转换为AspectJ项目,并使用AJDT插件编织和运行它?

Java Eclipse:如何将web项目转换为AspectJ项目,并使用AJDT插件编织和运行它?,java,eclipse,spring,spring-aop,Java,Eclipse,Spring,Spring Aop,我想做什么: 我想在Spring中使用@Configured注释。它需要启用AspectJ。我认为使用AJDT插件进行编译时编织可以解决这个问题。在安装插件之前,应该注入@Configured对象的依赖项保持为空 我所做的: 安装了Eclipse3.4的插件 右键单击我的web项目并将其转换为AspectJ项目 启用编译时编织 什么不起作用: 当我现在启动Tomcat6服务器时,我得到一个异常* 其他资料: 我还没有在项目属性的AspectJ构建和AspectJ编译器部分配置任何内

我想做什么:

  • 我想在Spring中使用@Configured注释。它需要启用AspectJ。我认为使用AJDT插件进行编译时编织可以解决这个问题。在安装插件之前,应该注入@Configured对象的依赖项保持为空
我所做的:

  • 安装了Eclipse3.4的插件
  • 右键单击我的web项目并将其转换为AspectJ项目
  • 启用编译时编织
什么不起作用:

  • 当我现在启动Tomcat6服务器时,我得到一个异常*
其他资料:

  • 我还没有在项目属性的AspectJ构建和AspectJ编译器部分配置任何内容
  • 首选项下的JDT编织表示已启用编织
  • 我仍然在项目属性下有Java构建路径和Java编译器。它们看起来就像我之前配置的一样(而上面两个新条目没有配置)
  • 我的@Configured对象文件的图标看起来像任何其他文件(即,没有任何方面的指示,我认为应该有)。文件名是MailNotification.java(而不是.aj),但我想它应该仍然可以工作,因为我正在使用AspectJ的Spring注释
  • 我还没有找到任何教程或类似的教程:如何将SpringWeb应用程序项目转换为AspectJ项目,并使用AJDT插件将方面编织到文件中,所有这些都在Eclipse3.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

您是否已将spring-aspects.jar添加到项目的方面路径中

在项目属性中,在“AspectJ构建”->“方面路径”下,尝试添加spring-aspects.jar并清理构建项目


很抱歉,您可能已经这样做了,但您没有提到。

编译时编织似乎不起作用。尝试将以下行添加到applicationcontext.xml

<context:load-time-weaver />
<context:spring-configured/>

您可能还需要将以下xsd添加到xml文件中

详情请参阅:


您可以在不使用AspectJ的情况下使用@Transactional。您的配置文件应包含以下内容以使其正常工作:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="
  http://www.springframework.org/schema/beans
  http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
  http://www.springframework.org/schema/aop
  http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
  http://www.springframework.org/schema/tx
  http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
  http://www.springframework.org/schema/util 
  http://www.springframework.org/schema/util/spring-util-2.5.xsd"
  >
<tx:annotation-driven/>


告诉spring在创建已配置bean的实例时查找@transactional注释。找到这样的注释后,spring将bean的动态代理返回给应用程序代码。这个动态代理确保无论何时调用带注释的方法,spring都能够拦截它以提供预期的事务行为。但是基于代理的AOP要求您根据接口而不是具体的类进行编码

我还没有添加它,也没有真正进行任何特定的配置(如上所述)。我似乎找不到任何关于AJDT插件的好文档,所以我真的不知道我需要做什么:-/