转载

Spring中获取代理对象的目标类Class及Class中的泛型参数的方法

在Spring里如果你通过AplicationContext获取Bean实例,你拿到的可能是一个被Spring代理的对象实例,如果你需要获取这个代理对象的目标类Class该怎么做呢?

也许你百度了半天找到的解决方案大都是要自己写上一大段蹩脚的代码,忘了那个过时的方案吧,只需要调用Spring的AopUtils,一行代码搞定。

AopUtils.getTargetClass(yourObjectInstance);

这种场景Spring内部肯定经常需要,用Spring自己的解决方案才是最合理的选择。

类似的,当你需要从类定义中提取泛型参数的对象Class,也可以借助Spring的方案:

ResolvableType resolvableType = ResolvableType.forClass(yourClass).getSuperType();
ResolvableType[] types = resolvableType.getGenerics();
return types[yourParamIndex].resolve();

更多极简封装,请关注diboot github

Diboot - 简单高效的自动化开发助理 (欢迎star)

原文  https://segmentfault.com/a/1190000021424718
正文到此结束
Loading...