问题描述
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,一切都正常。。。求帮助!
解决方案
把代码贴全一点
解决方案二:
<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> <value>studentTarget</value> </list> </property></bean>
解决方案三:
您的语句中 if(sname.equals("forever"))中间的这个forver显得怪怪的,你难道不这么觉得???