我有课程 A ,它实现了一个界面我。所以spring将它配置为一个bean,它作为属性被注入另一个类 B 的bean。类 B 代码尝试使用注入属性[ i.getClass()。toString()<获取类 A 的完全限定名称(包+类名) / strong>] ...这导致只获取对象的代理名称 class $ Proxy27 ...我也尝试了 i.getClass()。getCanonicalName() ;同样的结果......
那么,获取代理名称而不是类名的原因是什么?我需要完全合格的名字
答案 0 :(得分:4)
如果要获取班级名称,请执行以下操作:
Class<?> targetClass = AopUtils.getTargetClass(bean);
答案 1 :(得分:1)
看起来像Spring将你的bean包装到AOP代理中,例如应用一些建议或维护注入bean的范围(例如,当非单例bean注入单例时)。
答案 2 :(得分:0)
这对我有用:
Class<?> clazz = AopProxyUtils.ultimateTargetClass(proxy);
在这里找到: http://www.solidsyntax.be/2013/12/10/access-concrete-class-spring-proxy/