`

Pointcut is not well-formed: expecting 'identifier' at character position 0

 
阅读更多

异常信息如下:

 

Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'collectionBeanId' 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': Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.aop.aspectj.AspectJPointcutAdvisor]: Constructor threw exception; nested exception is java.lang.IllegalArgumentException: Pointcut is not well-formed: expecting 'identifier' at character position 0
* com.java.spring..*.*(..)
^

 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:405)
 at java.security.AccessController.doPrivileged(Native Method)
 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
 at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
 at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:220)
 at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
 at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
 at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
 at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
 at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:729)
 at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:381)
 at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
 at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
 at com.java.spring.demo.SpringDemo6.main(SpringDemo6.java:9)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.aop.aspectj.AspectJPointcutAdvisor#0': Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.aop.aspectj.AspectJPointcutAdvisor]: Constructor threw exception; nested exception is java.lang.IllegalArgumentException: Pointcut is not well-formed: expecting 'identifier' at character position 0
* com.java.spring..*.*(..)

 

解决方案:

原因是因为配置<aop:pointcut  id="mycut" expression="* com.java.spring..*.*(..)" />
expression时,没有指定"execution"造成的错误。

正确的配置如下:
    <!-- 配置AOP面向切面-->
    <aop:config>
           <!-- 配置需要面向切面的类 -->
         <aop:aspect id="asp" ref="personInterceptor">
             <!-- 配置切入点,指从什么包下面搜索需要配置面向切面的类. -->
             <aop:pointcut  id="mycut" expression="execution(* com.java.spring..*.*(..))" />
             <!-- 前置方法 -->
             <aop:before pointcut-ref="mycut" method="doAccessCheck"/>
             <!--  后置方法-->
             <aop:after-returning pointcut-ref="mycut" method="doAfterRetruing"/>
             <!-- 例外方法 -->
             <aop:after-throwing pointcut-ref="mycut" method="doAfterThrowing"/>
             <!-- 最终方法 -->
             <aop:after pointcut-ref="mycut" method="doAfter"/>
         </aop:aspect>
    </aop:config>

 

分享到:
评论

相关推荐

    Java八股文-Spring AOP

    2. **切点(Pointcut)** - 定义:指定了通知(Advice)应该在哪些连接点上生效。 - 示例:可以使用表达式来指定所有以`get`开头的方法作为切点。 3. **通知(Advice)** - 定义:在切点处执行的代码片段,用于...

    android-gradle-aspectj:gradle插件在Android项目中添加了对AspectJ的支持

    这个插件的目的是让Android开发者能够利用AspectJ的强大功能,如声明切面、定义通知(advice)、定义切入点(pointcut)等,来实现代码的解耦和增强。例如,我们可以使用AspectJ来统一处理日志、性能监控、权限检查...

    Annotation--学习:JDK内建Annotation

    - AOP(面向切面编程):Spring的`@Aspect`和`@Pointcut`注解定义切面和切点。 - 数据持久化:JPA中的`@Entity`、`@Table`、`@Column`等注解用于将Java对象映射到数据库表。 7. **最佳实践** - 适当使用注解:...

    swift-AopTestDemo:iOS埋点统计方案:1.MethodSwizzling2.AOP编程

    1. **切点(Pointcut)**:定义需要拦截的代码位置,如方法调用、属性访问等。 2. **通知(Advice)**:在切点处执行的代码,可以是前置通知(before)、后置通知(after)、异常通知(after throwing)等。 3. **切...

    pointcut表达式and or not在xml中配置

    &lt;aop:advisor advice-ref="loggingAdvice" pointcut-ref="serviceMethods"/&gt; &lt;/aop:config&gt; ``` 在这个例子中: - `not execution(* com.babyhen.service..LoginService.*(..))`:表示排除`LoginService`类中的...

    02-Spring面试题(最新版)-重点.zip

    - 切点(Pointcut):匹配特定方法或类的位置。 - 通知(Advice):在切点匹配时执行的动作。 - 连接点(Join Point):实际调用的点。 - 织入(Weaving):将切面应用到目标对象的过程。 4. **Spring MVC** -...

    Spring AOP学习资料(pdf)

    Pointcut (切入点)** - 定义:匹配连接点的表达式,用于指定通知应用的时机和目标对象。 **5. Target (目标对象)** - 定义:将要被代理的对象,通常是业务逻辑接口的实现。 **6. Proxy (代理对象)** - 定义:由...

    官方源码 spring-framework-5.3.7.zip

    2. AOP实现:通过代理模式实现切面编程,研究`Advisor`、`Pointcut`、`Aspect`等核心接口。 3. MVC框架:分析`DispatcherServlet`的请求调度机制,以及`HandlerMapping`和`HandlerAdapter`的角色。 4. 数据访问:...

    spring-learn:spring原始笔记

    6. **切点(Pointcut)**:定义了应用中哪些方法会被通知所拦截,通常通过表达式或注解来指定。 7. **代理(Proxy)**:Spring通过动态代理(JDK动态代理或CGLIB代理)来实现AOP功能,创建被通知的对象的代理对象。...

    spring-study-demo:Spring学习示例

    - **切入点(Pointcut)**:定义何时、何地执行通知的表达式,通常基于方法签名。 4. **数据访问集成**: - **JDBC模板**:Spring提供了JdbcTemplate,简化了JDBC操作,避免了繁琐的数据库连接管理和异常处理。 ...

    详解Spring 框架中切入点 pointcut 表达式的常用写法

    可以通过引用已定义的切入点(`pointcut-ref`),并结合不同的通知(`advice`)来实现更复杂的逻辑。 5. **学习建议**: - 理解AspectJ的切入点表达式语法是关键,虽然初看可能有些复杂,但通过实践和实例学习会更...

    Sping-textbook:根据JavaEE课本做笔记时写的代码

    - **切入点(Pointcut)**:定义通知应用的位置,可以是方法、类或注解。 3. **Spring MVC**: - **模型-视图-控制器(Model-View-Controller)**:Spring MVC是实现Web应用的一种架构模式,用于分离业务逻辑、...

    spring-aspectj-sample:在 Spring 框架 4 中使用 AspectJ 的示例

    4. **切点(Pointcut)**:切点是程序中的特定点,如方法的执行、异常的抛出等,匹配切点的规则由pointcut表达式定义。 5. **通知(Advice)**:当切点匹配时执行的代码块,根据执行时机不同,有before、after、...

    ISpring-IOC-AOP:自定义IOC & AOP实现

    4. **切点(Pointcut)**:切点是匹配连接点的表达式,定义了通知将在何时何地执行。 5. **代理(Proxy)**:Spring AOP可以创建两种类型的代理:JDK动态代理和CGLIB代理。前者适用于接口,后者用于没有接口的类。 ...

    Android-AOPExample:行动计划

    Aspectj切入点语法定义Cross-cutting concerns:即使在面向对象编程中大多数类都是执行一个单一的、特定的功能,...例如,我们通过定义一个pointcut和给出一个准确的advice实现向我们的程序中添加一个打印日志功能的as

    spring-4.3.jar和对应的源文件

    2. AOP模块:Spring的AOP实现了切面编程,允许开发者定义通知(advice)、切点(pointcut)和切面(aspect)。`AspectJAutoProxyCreator`和`Advised`接口是实现AOP的关键。 3. MVC框架:Spring MVC为构建Web应用...

    aspectj-learning:https

    4. **切入点(Pointcut)**:定义一组连接点的规则,可以是方法名、注解、包名等,用于定位通知将在何处执行。 5. **引入(Introduction)**:允许在现有类上添加新的接口或方法,而无需修改原有代码。 6. **织入...

    spring-demo:带有Spring框架的RESTful API

    AOP通过定义切面(Aspect)、通知(Advice)、连接点(Join Point)和切点(Pointcut)来实现代码的模块化。 4. **Spring MVC**:在Web开发中,Spring MVC是Spring框架的一部分,用于构建Web应用程序。它提供了一个...

    自学b站黑马ssm框架思维导图XMind笔记

    - 切面与通知:切点(Pointcut)定义关注点的位置,通知(Advice)定义关注点的行为。 - AOP实现:Spring通过代理模式实现AOP,支持编译时织入、类装载时织入和运行时织入。 7. **09SpringMVC.xmind** —— ...

    spring-framework:Spring源码阅读

    在源码中,你会看到Advisor、Pointcut、Aspect等概念的实现,以及如何通过ProxyFactoryBean或AspectJ自动代理来实现切面的织入。 4. **数据访问/集成**:Spring支持多种数据库访问,包括JDBC、ORM(Hibernate、...

Global site tag (gtag.js) - Google Analytics