[Spring Java JSP SSH ] spring拦截annotation的问题
Aaron5
2011-01-30
最近写了个自定义的annotation。想用spring的aop拦截并解析出annotation的值。
但是,发现只能解析到接口的annotation,不能解析到实现类的annotation。这是为什么呢? annotation定义代码如下: @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface MyTest { public String value() default "Hello World!"; } 业务实现类代码为: @Service("bo") public class BusinessServiceImp implements BusinessService{ @MyTest("test annotation") public String update(){ System.out.println("update data!"); return "update return value!"; } public void delete(){ System.out.println("delete data!"); } } AOP的around方法为: public Object around(ProceedingJoinPoint pjp) throws Throwable{ System.out.println("环绕通知前"); MethodSignature joinPointObject = (MethodSignature) pjp.getSignature(); Method method = joinPointObject.getMethod(); boolean flag = method.isAnnotationPresent(MyTest.class) ; if(flag){ MyTest annotation2 = method.getAnnotation(MyTest.class); System.out.println(method.getName() + "方法上的注解:"); System.out.println(annotation2.annotationType().getCanonicalName() + " : " + annotation2.value()+"\t"); } Object obj = pjp.proceed(); System.out.println("环绕通知后"); return obj; } 通过around的ProceedingJoinPoint对象获取到Method对象。可是获取到的Method对象似乎不是实现类的Method对象,因而解析不出annotation。这是为什么呢? |
|
Aaron5
2011-01-30
如果将注解放在接口中,将能解析出annotation。
业务接口定义: public interface BusinessService { //这里的annotation可以获取到。实现类中的却不能获取到。这就是问题所在。纠结啊。 @MyTest("test annotation") public String update(); public void delete(); } |
|
www88485400
2011-08-10
不用纠结了 因为你是居于接口的编程, 面向的就是接口 所以你只能发现接口的Anntation
如果你不是面向接口的 哪结果就不一样了。 你不妨做一个测试。 他找的时候应该是根据接口查找的。 |
|
zhouqiugang
2011-09-16
你些的是通过代理接口得到方法的
你可以这样拿类的方法 Method method = pjp.getTarget().getClass().getMethod(joinPointObject.getName, joinPointObject.getParameterTyeps()) |
相关讨论
相关资源推荐
- java程序编译错误属于异常吗_“Cannot find symbol”编译错误是什么意思?
- QT中手动释放堆中的对象(new 出来的)
- JAVA 面向对象 类 对象 封装
- 碰到Cannot find module了吗? 来看看require函数与NodeJS模块加载
- java 编译找不到子类_关于Java:”找不到符号”Cannot find symbol编译错误意味着什么?...
- 学习笔记整理——Find 命令,附带练习题及答案。
- java 隐藏父类方法,java 子类继承父类成员变量的隐藏、实现方法的重写
- JSP九大内置对象和EL表达式中的隐含对象
- c# -- 对象销毁和垃圾回收
- JSP九大内置对象