当前位置: 首页 > 知识库问答 >
问题:

Spring Aspectj maven-实例化WarebeanPostProcessor的NoClassDefError

穆理
2023-03-14

我使用Spring AOP使用maven build并在启动应用程序服务器时收到以下错误-

    org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from ServletContext resource [/WEB-INF/mvc-dispatcher-servlet.xml]; nested exception is java.lang.NoClassDefFoundError: org/springframework/beans/factory/config/InstantiationAwareBeanPostProcessor
        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:412)
        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334)
        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)
        at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:174)
        at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:209)
        Truncated. see log file for complete stacktrace
Caused By: java.lang.NoClassDefFoundError: org/springframework/beans/factory/config/InstantiationAwareBeanPostProcessor

以下是测试方面-

@Aspect 
@Component
public class TestAspect {
    @Pointcut("execution(* com.example.controller.MyController.submitOptions(..))")
    public void logBefore(){} 

    @Before("logBefore()")
    public void printBefore() { 
        System.out.println("print before aspect is invoked.");
    }

    public TestAspect() { 

    }
}

Spring配置如下所示-

:
:
xmlns:aop="http://www.springframework.org/schema/aop"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans     
        http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
        http://www.springframework.org/schema/context 
        http://www.springframework.org/schema/context/spring-context-3.2.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
        http://www.springframework.org/schema/aop 
        http://www.springframework.org/schema/aop/spring-aop-3.2.xsd">

: : : :

     <context:component-scan base-package="com.example.test,com.example.controller"/>
     <aop:aspectj-autoproxy />
     <bean id="TestAspect" class="com.example.test.TestAspect"/>

pom xml依赖于aspectjrt、aspectjweaver、aspectjtools和其他。。。使用了aspectj maven插件版本1.5。

以下是pom文件中的依赖项-

</dependency>
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>${spring.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>${spring.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-beans</artifactId>
    <version>${spring.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-expression</artifactId>
    <version>${spring.version}</version>
</dependency>
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-aspects</artifactId>
    <version>${spring.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-aop</artifactId>
    <version>${spring.version}</version>
</dependency>
<dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>aspectjrt</artifactId>
    <version>1.7.3</version>
</dependency>
<dependency>
    <groupId>aopalliance</groupId>
    <artifactId>aopalliance</artifactId>
    <version>1.0</version>
</dependency>
<dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>aspectjweaver</artifactId>
    <version>1.7.3</version>
</dependency>
<dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>aspectjtools</artifactId>
    <version>1.7.3</version>
</dependency>
<dependency>
    <groupId>cglib</groupId>
    <artifactId>cglib</artifactId>
    <version>2.2</version>
</dependency>   

如果配置有任何问题,请告诉我。

共有1个答案

卫俊力
2023-03-14

您必须在pom.xml中添加以下依赖项

<dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <version>${yourSpringVersion}</version>
</dependency>
 类似资料:
  • 假设你有一个绘制了很多模型的场景,而大部分的模型包含的是同一组顶点数据,只不过进行的是不同的世界空间变换。想象一个充满草的场景:每根草都是一个包含几个三角形的小模型。你可能会需要绘制很多根草,最终在每帧中你可能会需要渲染上千或者上万根草。因为每一根草仅仅是由几个三角形构成,渲染几乎是瞬间完成的,但上千个渲染函数调用却会极大地影响性能。 如果我们需要渲染大量物体时,代码看起来会像这样: for(un

  • 7.3.2 bean的实例化 bean的定义本质上是创建一个或多个对象的配方。当被请求时,容器在配方中查找指定名称的bean,使用bean定义中封装的配置元数据来创建(或得到)一个实际的对象。 如果使用基于XML的配置元数据,在<bean/>元素的class属性中指定被实例化对象的类型(或类)。class属性通常是强制性的,它在内部实质是BeanDefinition实例的Class属性。(例外情况

  • 5.4. 类的实例化 5.4.1. 垃圾回收 在 Python 中对类进行实例化很直接。为了对类进行实例化,只要调用类,好象它是一个函数,传入定义在 __init__ 方法中的参数。返回值将是新创建的对象。 例 5.7. 创建 FileInfo 实例 >>> import fileinfo >>> f = fileinfo.FileInfo("/music/_singles/kairo.mp3")

  • 问题内容: 当用Java实例化一个对象时,真正进入内存的是什么? 是否包含父级构造函数的副本? 投射时,为什么隐藏数据成员的行为与重写方法不同? 我理解为使您正确使用这些东西而通常给出的抽象解释,但是JVM如何真正做到这一点。 问题答案: 实例化对象时,实际上仅“静态”数据以及创建该对象的对象类型的引用被“创建”。 没有方法被复制过。 创建它的类的“引用”实际上是一个指针调度表。该类可用的每个方法

  • OpenQa.Selenium.WebDriverException:无法启动http://localhost:58266/bei OpenQa.Selenium.DriverService.start() bei OpenQa.Selenium.Remote.DriverServiceCommandExecutor.Execute(命令命令执行)bei OpenQa.Selenium.Remot

  • 我们正在开发一个连接到遗留数据库的应用程序。这是非常“非类型化”的,几乎所有数据都使用字符串。更糟糕的是,这远远不是同质的:它使用不同的日期或时间模式(“YYDDMM”、“HHMMSS”、毫秒)和布尔值模式(“Y”/“N”、“X'/' '), 例如。 我们想使用JPA(EclipseLink)和定制转换器。问题是需要一个实现的类,因此我们必须为每个模式创建新的类。我想要的是一个BooleanCon