异常详情
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'StudentsImpl' defined in class path resource [beans.xml]: Initialization of bean failed; nested exception isjava.lang.IllegalArgumentException: error at ::0 formal unbound in pointcut at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:527) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:580) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425) at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139) at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83) at TestStudentsDAOProxy.main(TestStudentsDAOProxy.java:11) Caused by: java.lang.IllegalArgumentException: error at ::0 formal unbound in pointcut at org.aspectj.weaver.tools.PointcutParser.parsePointcutExpression(PointcutParser.java:302) at org.springframework.aop.aspectj.AspectJExpressionPointcut.buildPointcutExpression(AspectJExpressionPointcut.java:195) at org.springframework.aop.aspectj.AspectJExpressionPointcut.checkReadyToMatch(AspectJExpressionPointcut.java:181) at org.springframework.aop.aspectj.AspectJExpressionPointcut.getClassFilter(AspectJExpressionPointcut.java:162) at org.springframework.aop.support.AopUtils.canApply(AopUtils.java:200) at org.springframework.aop.support.AopUtils.canApply(AopUtils.java:254) at org.springframework.aop.support.AopUtils.findAdvisorsThatCanApply(AopUtils.java:286) at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.findAdvisorsThatCanApply(AbstractAdvisorAutoProxyCreator.java:117) at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.findEligibleAdvisors(AbstractAdvisorAutoProxyCreator.java:87) at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.getAdvicesAndAdvisorsForBean(AbstractAdvisorAutoProxyCreator.java:68) at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.wrapIfNecessary(AbstractAutoProxyCreator.java:359) at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.postProcessAfterInitialization(AbstractAutoProxyCreator.java:322) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:407) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1426) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) ... 11 more |
错误代码
package com.eden.proxy;
import java.lang.reflect.Method;
import org.aspectj.lang.annotation.AfterReturning; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.springframework.stereotype.Component;
/** * 使用AspectJ的切面类 * @author Administrator */ @Aspect //声明为一个 AspectJ切面 @Component//声明为组件,这样系统启动会进行该类的初始化 publicclass StudentsDaoAspectJ {
@AfterReturning("execution(public void com.eden.dao.impl.StudentsImpl.*())") publicvoid afterReturning(Object arg0, Method arg1, Object[] arg2, Object arg3)throws Throwable { System.out.println("方法执行后。。。"); } @Before("execution(public void com.eden.dao.impl.StudentsImpl.*())") publicvoid before(Method arg0, Object[] arg1, Object arg2) throws Throwable { System.out.println("方法执行前。。。"); } }
|
错误原因
定义了通知方法,方法需要参数,但是注解设置没有指定调用方法参数,需要把通知方法中的参数删掉,变成空参数方法(如何设置带有参数的通知方法,还不清楚^_^)
正确代码
package com.eden.proxy;
import java.lang.reflect.Method;
import org.aspectj.lang.annotation.AfterReturning; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.springframework.stereotype.Component;
/** * 使用AspectJ的切面类 * @author Administrator */ @Aspect //声明为一个 AspectJ切面 @Component//声明为组件,这样系统启动会进行该类的初始化 publicclass StudentsDaoAspectJ {
@AfterReturning("execution(public void com.eden.dao.impl.StudentsImpl.*())") publicvoid afterReturning() throws Throwable { System.out.println("方法执行后。。。"); } @Before("execution(public void com.eden.dao.impl.StudentsImpl.*())") publicvoid before() throws Throwable { System.out.println("方法执行前。。。"); } }
|
正确输出
log4j:WARN No appenders could be found for logger (org.springframework.context.support.ClassPathXmlApplicationContext). log4j:WARN Please initialize the log4j system properly. 方法执行前。。。 保存成功 方法执行后。。。
|
相关推荐
### AspectJ in Action: Enterprise AOP with Spring Applications #### 关键知识点概述 1. **Spring-AspectJ集成:**本书重点介绍了Spring框架与AspectJ相结合的技术优势及其在企业级应用中的强大功能。 2. **...
### 关于《AspectJ in Action: Enterprise AOP with Spring Applications(第2版)》的关键知识点解析 #### 一、AspectJ简介与AOP概念 **AspectJ**是面向切面编程(Aspect-Oriented Programming, AOP)的一种成熟...
com.springsource.org.aspectj.weaver-1.6.8.jar
Maven坐标:org.aspectj:aspectjweaver:1.9.7; 标签:aspectj、aspectjweaver、jar包、java、中英对照文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,...
Maven坐标:org.aspectj:aspectjweaver:1.9.7; 标签:aspectj、aspectjweaver、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中...
SpringAOP 报错error at ::0 can't find referenced pointcut deleteCell,或类似这样的错误,可能是因为springAOP相关依赖包版本低的缘故,本下载包,可以解决这个问题。
java: 读取D:\Develop\maven\repository\org\aspectj\aspectjweaver\1.9.6\aspectjweaver-1.9.6.jar时出错; error in opening zip file 提示jar出问题,找到此处,删除重新下载,但是jar依旧是损坏状态
aspectj-1.8.10.jar org.aspectj.lang.annotation.* org.aspectj.lang.annotation.Pointcut
在AspectJ中,我们通过定义pointcut(切入点)来指定代码执行的特定位置,然后通过advice(通知)定义在这些切入点上执行的行为。通知可以是前置通知(before)、后置通知(after)、环绕通知(around)等。 当我们...
【标题】"spring-aspectj-sample:在 Spring 框架 4 中使用 AspectJ 的示例"揭示了本项目的核心内容,即演示如何在Spring框架的第4个主要版本中整合并应用AspectJ,一个强大的面向切面编程(AOP)工具。面向切面编程...
spring 前置通知的相关jar包, 包括 com.springsource.org.aopalliance-1.0.0.jar 和 com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar
要学习和使用AspectJ,需要了解基本的切面概念,如切入点(Pointcut)、通知(Advice)、连接点(Join Point)等。同时,熟悉AspectJ的语法,包括注解和XML配置文件,以及如何在Maven或Gradle等构建工具中集成...
**Gradle AspectJ 编译时编织集成** 在软件开发中,AspectJ 是一个强大的面向切面编程(AOP)框架,它允许开发者定义“方面”来封装关注点,如日志、事务管理等,这些关注点通常横切多个业务逻辑模块。Gradle 是一...
4. **连接点(Join Point)和切点(Pointcut)**:连接点是在程序执行过程中可以插入切面的特定点,如方法调用、构造器调用等。切点是匹配一组连接点的表达式,它定义了通知应用的位置。 5. **织入(Weaving)**:...
4. **切入点(Pointcut)**:定义一组连接点的规则,可以是方法名、注解、包名等,用于定位通知将在何处执行。 5. **引入(Introduction)**:允许在现有类上添加新的接口或方法,而无需修改原有代码。 6. **织入...
spring中使用aop技术需要用到的aspectj包,另外还有一个aopalliance-1.0.jar我也上传了
它可以在编译时或运行时进行织入,使你可以使用AspectJ的语法编写切面并将其应用到Spring应用上下文中。 2. **asm-3.3.jar, asm-commons-3.3.jar, asm-tree-3.3.jar**:ASM是一个Java字节码操控和分析框架,用于...
Spring AOP的一个常见问题是获取Pointcut到达类的内部方法调用。 在这个示例中,您可以在一个简单的Spring Boot示例中看到如何使用AspectJ处理节拍时间编织。 示例场景 在此示例中,将发生以下情况: 我们在上调用...
AspectJ 电子书它将帮助您学习以兴趣为导向的 AspectJ 语言,该语言将 AOP 原则注入到 Java 编程语言以及随之而来的新结构中。 您可以在此处找到 PDF、ePub 和 Kindle 格式的本书内容: 。 第 1 部分:原则和方面J ...
在AspectJ-Dropbox项目中,开发者可能使用AspectJ的切点(pointcut)和通知(advice)来定义何时以及如何对Dropbox客户端的文件操作进行拦截。切点是程序执行过程中的特定位置,而通知则是当切点匹配时执行的代码块。...