Spring 2.0中 AOP的编程:
[color=red]nested exception: 该嵌套异常往往是导入包是嵌套造成的,将包remove后再重新导入[/color]
方式一:
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
[color=orange]
问题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[/color]现象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
spring 2.0 aop 配置
原创铁憨憨呀 ©著作权
文章标签 spring 2.0 aop 文章分类 Java 后端开发
-
spring2.0 aop总结
spring aop
职场 spring 休闲 aop -
Spring2.0 学习笔记
Spring2 学习笔记,一起成长!!!
学习 java 服务器 Spring spring -
Spring2.0 jar包说明
1、 S
Spring AOP 框架 MVC iBATIS -
Spring2.0与EJB3.0的比较
个这样的应用框架:它可以使开发人员不用关注于很多复杂的问题,比如事务处理、安全和持久化等。一个设...
Spring 应用服务器 EJB 企业应用 框架 -
Spring2.0和EJB3.0随谈
Spring自从2003年发布以来,一直是Java开源框架的奇迹之一。从2000年开始,伴随着B/S架构逐渐引入企业应用软件开发的领域,J
spring ejb jboss seam Java -
Spring2.0 学习笔记 > 3.使用场景
Spring2.0 学习笔记 > 3.使用场景
Spring java 学习 spring web应用 -
Spring2.0 学习笔记 > 2.七个模块
Spring framework七个模块
spring java 封装 单例类 -
ce lua脚本加密
1.介绍Cheat Engine不用我多介绍了吧,不知道的百度吧..........2.起因因为最近到了网瘾少年之沉迷游戏的阶段,玩某些网游时需要使用网瘾少年之游戏难度降低(W)工(G)具,所以需要用CE对游戏内存进行搜索,找一些基址做网瘾少年应该做的事情,然而刚运行官方的CE没多久,我的帐号已经违反某游玩家协议被封号了,我嘞个去,不能忍,就有了这篇文章,好了不吹了............3.正文
ce lua脚本加密 编译Cheat Engine 修改自己的Cheat Engine Cheat Engine 百度