spring aop中关于反射的问题

整个系统是mvc架构,有action、service、dao这三层。
在dao实现类中,现在有一个父类A,子类B,在父类中有一个save方法,方法上有一个注解。当调用save方法的时候,会被spring的aop拦截,通过反射机制,得到目标对象是子类,方法是父类中的save方法。
现在要取方法上的注解,取注解我是通过得到目标对象,再得到方法,再取注解。此时问题出来了,会报子类中没有save方法的错误。
这个错误报的是正确的,因为子类中确实没有save方法,之所以能够调用完全是因为继承的关系,但是并不能说子类就有save方法了。
在这样的情况下,大家是如何获取到save方法上的注解的。
子类覆盖父类的save方法这个方法除外。
请指教。

2个回答

Anotation? 不是很明白你的意思。

假设, 我理解是这个, 应该任何方法的Anotaion很容易获得啊。 最好把你的代码贴一下。我认为, 你应该定义一个接口类, 然后在接口上做Anotation的获得。 对了,做代码的时候, 记住, 别从现实是获得, 你应该先获得这个实现的接口, 然后从接口上获得Anotation.

首先我对问题的理解,你是说类A被类B继承,在类A中的save方法被注解,但是类B中没有覆盖save方法,你要通过一个类B的实例获取save方法的注解,对吗?

类B中没有save的注解方法,save方法是在类A中注解的,所以要取得类B中的save方法的注解,就是自下而上的遍历类B的超类,一直到获取到save方法的注解结束。

Class bc=Class.forName("B");
//Class bc=binstance.getClass();

for(;Class bsc=bc.getSuperclass();){
if(bsc.getName().equals("java.lang.Object")){
break;
}
else if(bsc.isAnnotationPresent(XXX)){
//DO SOMETHING
}
else{
continue;
}
}

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐