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表达式写错了。

posted @ 2019-03-06 16:44  小楼夜听雨QAQ  阅读(1782)  评论(0编辑  收藏  举报