Spring AOP 报错org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'XXXXXX' defined in class path resource..........

完整报错如下:


org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'beforeAdvice' defined in class path resource [applicationContext.xml]: BeanPostProcessor before instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.aop.aspectj.AspectJPointcutAdvisor#0': Bean instantiation via constructor failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.aop.aspectj.AspectJPointcutAdvisor]: Constructor threw exception; nested exception is java.lang.IllegalArgumentException: Pointcut is not well-formed: expecting 'name pattern' at character position 10
execution()

出现了一种<aop:config>标签与bean无法共存的现象,一开始以为是aspectj 包的版本问题,可修改来修改去,还是报错。

解决方案:后来发现,还是因为excution()内的表达式写错了,修改后运行成功。

    <aop:config>
        <aop:aspect id="beforeAspect" ref="beforeAdvice">
            <aop:before method="methodBefore" pointcut="execution(* com.ph.service..*.*(..))"/>
        </aop:aspect>
    </aop:config>

如果排除了版本不匹配、注解没写等问题后,还是报错,就要考虑是不是execution表达式写错了。

原文地址:https://www.cnblogs.com/phdeblog/p/10484229.html