浏览 5128 次
锁定老帖子 主题:spring 2.0 aop 配置
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-04-08
nested exception: 该嵌套异常往往是导入包是嵌套造成的,将包remove后再重新导入 方式一: publicclass User { publicvoid method() { System.out.println("in method1"); } } publicclass LogBean { public Object aroundLogCalls(ProceedingJoinPoint joinPoint) throws Throwable { System.out.println("before invoke method:" + joinPoint.getSignature().getName()); Object object = joinPoint.proceed(); System.out.println("after invoke method:" + joinPoint.getSignature().getName()); return object; } } 采用在xml配置aop: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <!-- 注意上面的四个地址用空格分开 --> <aop:config> <!-- expression 表示要执行的匹配表达式,这里匹配所有的public方法,但是去除logger类的所有方法,防止无限调用--> <aop:pointcut id="loggableCalls" expression="execution(public * *(..)) "/> <aop:aspect id="logAspect" ref="logBean"> <aop:around pointcut-ref="loggableCalls" method="aroundLogCalls" /> </aop:aspect> </aop:config> <bean id="logBean" class="LogBean" /> <bean id="user" class="User" /> 方式二: 采用标注: @Aspect publicclass LogAspect { @Pointcut("execution(public * *(..))") publicvoid publicMethods() { } @Around("publicMethods()") public Object aroundLogCalls(ProceedingJoinPoint joinPoint) throws Throwable { System.out.println("before invoke method:" + joinPoint.getSignature().getName()); Object object = joinPoint.proceed(); System.out.println("after invoke method:" + joinPoint.getSignature().getName()); return object; } } <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <!-- 注意上面的四个地址用空格分开 --> <aop:aspectj-autoproxy /> <!-- 或者使用以下定义 <bean class="org.springframework.aop.aspectj.annotation.AnnotationAwareAspectJAutoProxyCreator" /> --> <bean id="logAspect" class="LogAspect" /> <bean id="user" class="User" /> </beans> 这样配置文件就就只有一个<aop:aspectj-autoproxy />很简单。 出现的问题解决: 问题1:Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory at org.springframework.util.ClassUtils.<clinit>(ClassUtils.java:67) at org.springframework.core.io.DefaultResourceLoader.<init>(DefaultResourceLoader.java:52) at org.springframework.context.support.AbstractApplicationContext.<init>(AbstractApplicationContext.java:184) at org.springframework.context.support.AbstractRefreshableApplicationContext.<init>(AbstractRefreshableApplicationContext.java:80) at org.springframework.context.support.AbstractXmlApplicationContext.<init>(AbstractXmlApplicationContext.java:58) at 需要加上:commons-logging.jar log4j-1.2.11.jar 问题2:Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from class path resource [text.xml]; nested exception is java.lang.NoClassDefFoundError: org/aspectj/weaver/reflect/ReflectionWorld$ReflectionWorldException Caused by: java.lang.NoClassDefFoundError: org/aspectj/weaver/reflect/ReflectionWorld$ReflectionWorldException at java.lang.Class.forName0(Native Method) 需要加上:aspectjweaver.jar 问题3:Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'logBean' defined in class path resource [text.xml]: Initialization of bean failed; nested exception is org.springframework.aop.framework.AopConfigException: Cannot proxy target class because CGLIB2 is not available. Add CGLIB to the class path or specify proxy interfaces. Caused by: org.springframework.aop.framework.AopConfigException: Cannot proxy target class because CGLIB2 is not available. Add CGLIB to the class path or specify proxy interfaces. 需要加上:cglib-2.1.3.jar 问题4:xception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'logBean' defined in class path resource [text.xml]: Initialization of bean failed; nested exception is java.lang.NoClassDefFoundError: org/objectweb/asm/Type Caused by: java.lang.NoClassDefFoundError: org/objectweb/asm/Type at net.sf.cglib.core.TypeUtils.parseType(TypeUtils.java:180) 需要加上:asm.jar 转载:http://pengchua.iteye.com/blog/142879 问题5: CGLIB Enhancement failed: com.bowen.domain.Schools java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V at net.sf.cglib.core.ClassEmitter.begin_class(ClassEmitter.java:77) at net.sf.cglib.core.KeyFactory$Generator.generateClass(KeyFactory.java:173) at net.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25) 解决:由于不同版本让我想到了可能会因为其它三方包是不同版本引起的最新的MyEclipse,所以里面的Hibernate也是最新的3.1(它里面还带有一个3.0版本的) 删除 多余的包 Hibernate3.1现象2: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in resource [/WEB-INF/dataAccessContext-hibernate.xml] of ServletContext: Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: javax/transaction/TransactionManager java.lang.NoClassDefFoundError: javax/transaction/TransactionManager 原因:缺少jta.jar ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 现象3: java.lang.NoClassDefFoundError: org/dom4j/Attribute 缺dom4j.jar java.lang.NoClassDefFoundError: net/sf/ehcache/CacheException 缺ehcache.jar java.lang.NoClassDefFoundError: net/sf/cglib/core/KeyFactory 缺cglib-full.jar 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |