日期:2014-05-20  浏览次数:21295 次

Spring AO问题
老是提示这样的错误
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'loggerBean' defined in class path resource [test/applicationContext.xml]: 
Initialization of bean failed; nested exception is org.springframework.aop.framework.AopConfigException: Couldn't generate CGLIB subclass of class [class test.LogBean]:
 Common causes of this problem include using a final class or a non-visible class; nested exception is net.sf.cglib.core.CodeGenerationException: java.lang.reflect.InvocationTargetException-->null

配置文件

<?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-2.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">

<bean id="loggerBean" name="loggerBean" class="test.LogBean"/>
<bean id="aopBean" class="test.AOPBean" />
<aop:config>
<aop:pointcut id="loggerCalls" 
expression="execution(public * *(..))" />

<aop:aspect id="logAspect" ref="loggerBean">
<aop:around pointcut-ref="loggerCalls" method="aroundLogCalls"/>
</aop:aspect>
</aop:config>

</beans>

LogBean.java文件
package test;

import org.aspectj.lang.ProceedingJoinPoint;


public class LogBean {
public Object aroundLogCalls(ProceedingJoinPoint joinPoint)throws Throwable{

System.out.println("before invoke method:"+joinPoint.getSignature().getName());

Object obj = joinPoint.proceed();

System.out.println("After invoke methond:"+joinPoint.getSignature().getName());

return obj;
}

}


AOPBean文件
package test;

public class AOPBean {
public void display(){
System.out.println("AOPBean.display()");
}

}


AOPMain文件
package test;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class AOPMain {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ClassPathXmlApplicationContext factory =
new ClassPathXmlApplicationContext("test/applicationContext.xml");

AOPBean aopbean = (AOPBean)factory.getBeanFactory().getBean("aopBean");
aopbean.display();
}

}






------解决方案--------------------

Java code
ClassPathXmlApplicationContext factory = 
new ClassPathXmlApplicationContext("test/applicationContext.xml");

------解决方案--------------------
Couldn't generate CGLIB 说明少包了
------解决方案--------------------
这是有关aop里面出的问题
他那个包有问题