异常信息如下:
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>
相关推荐
2. **切点(Pointcut)** - 定义:指定了通知(Advice)应该在哪些连接点上生效。 - 示例:可以使用表达式来指定所有以`get`开头的方法作为切点。 3. **通知(Advice)** - 定义:在切点处执行的代码片段,用于...
这个插件的目的是让Android开发者能够利用AspectJ的强大功能,如声明切面、定义通知(advice)、定义切入点(pointcut)等,来实现代码的解耦和增强。例如,我们可以使用AspectJ来统一处理日志、性能监控、权限检查...
- AOP(面向切面编程):Spring的`@Aspect`和`@Pointcut`注解定义切面和切点。 - 数据持久化:JPA中的`@Entity`、`@Table`、`@Column`等注解用于将Java对象映射到数据库表。 7. **最佳实践** - 适当使用注解:...
1. **切点(Pointcut)**:定义需要拦截的代码位置,如方法调用、属性访问等。 2. **通知(Advice)**:在切点处执行的代码,可以是前置通知(before)、后置通知(after)、异常通知(after throwing)等。 3. **切...
<aop:advisor advice-ref="loggingAdvice" pointcut-ref="serviceMethods"/> </aop:config> ``` 在这个例子中: - `not execution(* com.babyhen.service..LoginService.*(..))`:表示排除`LoginService`类中的...
- 切点(Pointcut):匹配特定方法或类的位置。 - 通知(Advice):在切点匹配时执行的动作。 - 连接点(Join Point):实际调用的点。 - 织入(Weaving):将切面应用到目标对象的过程。 4. **Spring MVC** -...
Pointcut (切入点)** - 定义:匹配连接点的表达式,用于指定通知应用的时机和目标对象。 **5. Target (目标对象)** - 定义:将要被代理的对象,通常是业务逻辑接口的实现。 **6. Proxy (代理对象)** - 定义:由...
2. AOP实现:通过代理模式实现切面编程,研究`Advisor`、`Pointcut`、`Aspect`等核心接口。 3. MVC框架:分析`DispatcherServlet`的请求调度机制,以及`HandlerMapping`和`HandlerAdapter`的角色。 4. 数据访问:...
6. **切点(Pointcut)**:定义了应用中哪些方法会被通知所拦截,通常通过表达式或注解来指定。 7. **代理(Proxy)**:Spring通过动态代理(JDK动态代理或CGLIB代理)来实现AOP功能,创建被通知的对象的代理对象。...
- **切入点(Pointcut)**:定义何时、何地执行通知的表达式,通常基于方法签名。 4. **数据访问集成**: - **JDBC模板**:Spring提供了JdbcTemplate,简化了JDBC操作,避免了繁琐的数据库连接管理和异常处理。 ...
可以通过引用已定义的切入点(`pointcut-ref`),并结合不同的通知(`advice`)来实现更复杂的逻辑。 5. **学习建议**: - 理解AspectJ的切入点表达式语法是关键,虽然初看可能有些复杂,但通过实践和实例学习会更...
- **切入点(Pointcut)**:定义通知应用的位置,可以是方法、类或注解。 3. **Spring MVC**: - **模型-视图-控制器(Model-View-Controller)**:Spring MVC是实现Web应用的一种架构模式,用于分离业务逻辑、...
4. **切点(Pointcut)**:切点是程序中的特定点,如方法的执行、异常的抛出等,匹配切点的规则由pointcut表达式定义。 5. **通知(Advice)**:当切点匹配时执行的代码块,根据执行时机不同,有before、after、...
4. **切点(Pointcut)**:切点是匹配连接点的表达式,定义了通知将在何时何地执行。 5. **代理(Proxy)**:Spring AOP可以创建两种类型的代理:JDK动态代理和CGLIB代理。前者适用于接口,后者用于没有接口的类。 ...
Aspectj切入点语法定义Cross-cutting concerns:即使在面向对象编程中大多数类都是执行一个单一的、特定的功能,...例如,我们通过定义一个pointcut和给出一个准确的advice实现向我们的程序中添加一个打印日志功能的as
2. AOP模块:Spring的AOP实现了切面编程,允许开发者定义通知(advice)、切点(pointcut)和切面(aspect)。`AspectJAutoProxyCreator`和`Advised`接口是实现AOP的关键。 3. MVC框架:Spring MVC为构建Web应用...
4. **切入点(Pointcut)**:定义一组连接点的规则,可以是方法名、注解、包名等,用于定位通知将在何处执行。 5. **引入(Introduction)**:允许在现有类上添加新的接口或方法,而无需修改原有代码。 6. **织入...
AOP通过定义切面(Aspect)、通知(Advice)、连接点(Join Point)和切点(Pointcut)来实现代码的模块化。 4. **Spring MVC**:在Web开发中,Spring MVC是Spring框架的一部分,用于构建Web应用程序。它提供了一个...
- 切面与通知:切点(Pointcut)定义关注点的位置,通知(Advice)定义关注点的行为。 - AOP实现:Spring通过代理模式实现AOP,支持编译时织入、类装载时织入和运行时织入。 7. **09SpringMVC.xmind** —— ...
在源码中,你会看到Advisor、Pointcut、Aspect等概念的实现,以及如何通过ProxyFactoryBean或AspectJ自动代理来实现切面的织入。 4. **数据访问/集成**:Spring支持多种数据库访问,包括JDBC、ORM(Hibernate、...