问题描述
- 初学Spring aop ,遇到了object is not an instance of declaring class的问题
- CompareInterceptor类
package com.spring.advice;
import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;
public class CompareInterceptor implements MethodInterceptor {@Overridepublic Object invoke(MethodInvocation invocation) throws Throwable { // TODO Auto-generated method stub Object result = null; String sname = invocation.getArguments()[0].toString(); if(sname.equals(""forever"")){ result = invocation.proceed(); } else{ System.out.println(""此学生是:""+sname+"",而不是forever""); } return result;}
}
Test 类
package com.spring.test;import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;import com.spring.aop.Istudent;
public class Test {
public static void main(String args[]){
ApplicationContext context = new ClassPathXmlApplicationContext(""applicationContext.xml"");
Istudent st = (Istudent)context.getBean(""student"");
st.addStudent(""forever"");
}
}applicationContext.xml
<?xml version=""1.0"" encoding=""UTF-8""?>
xmlns=""http://www.springframework.org/schema/beans""
xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance""
xmlns:p=""http://www.springframework.org/schema/p""
xsi:schemaLocation=""http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd""><bean id=""beforeAdvice"" class=""com.spring.advice.BeforeAdvice"" /><bean id=""afterAdvice"" class=""com.spring.advice.AfterAdvice"" /> <bean id=""compareInterceptor"" class=""com.spring.advice.CompareInterceptor"" /><bean id=""studentTarget"" class=""com.spring.aop.StudentImpl"" /><bean id=""student"" class=""org.springframework.aop.framework.ProxyFactoryBean"" > <property name=""proxyInterfaces""> <value>com.spring.aop.Istudent</value> </property> <property name=""interceptorNames""> <list> <value>beforeAdvice</value> <value>afterAdvice</value> <value>compareInterceptor</value> </list> </property> <property name=""target""> <value>studentTarget</value> </property></bean>
只要不是参数不是forever,一切都正常。。。求帮助!
解决方案
你这段代码有问题!