目标类的set方法是final的,get方法不是。aop代理之后set的值在get为空。求解这是为什么???前提是final的是客户的框架,我动不了。有什么解决方法吗??
目标方法
[code="java"]package demo.aop;
import org.springframework.stereotype.Component;
@Component("test")
public class TestService {
String data;
public String getData() {
return data;
}
public final void setData(String data) {
this.data = data;
}
}[/code]Mian[code="java"]package demo.aop;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Main {
public static void main(String[] args) {
ApplicationContext context=new ClassPathXmlApplicationContext("demo/aop/applicationContext.xml");
TestService service=(TestService) context.getBean("test");
// service.test();
service.setData("AAA");
String sss=service.getData();
System.out.println(sss);
// service.out();
System.out.println("end");
// service=new TestService();
// service.setData("BBB");
// service.setData0("AAA");
// service.out();
}
}[/code]Aop[code="java"]package demo.aop;
import java.lang.reflect.Method;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.stereotype.Component;
@Component
@Aspect
public class LogAspect {
@Pointcut("execution(* demo.aop.*.*test(..))")
public void testPointCut() {
}
@Around("testPointCut()")
public Object doAround(ProceedingJoinPoint point) throws Throwable {
Object object = point.proceed();
return object;
}
}[/code]