Spring 如何从正在通过AOP代理的bean中获取类?

Spring 如何从正在通过AOP代理的bean中获取类?,spring,Spring,我有一个实现接口I的类A。所以spring将其配置为一个bean,该bean作为属性注入到类B的另一个bean中。类B代码尝试使用注入的属性[i.getClass.toString]获取类A的完全限定名称包+类名。。。这将导致仅获取对象类$Proxy27的代理名称。。。我还尝试了I.getClass.getCanonicalName;同样的结果 那么,是什么原因导致使用代理名而不是类名呢?我需要完全限定的名称就像Spring将您的bean包装到AOP代理中一样,例如应用一些建议或维护注入bean

我有一个实现接口I的类A。所以spring将其配置为一个bean,该bean作为属性注入到类B的另一个bean中。类B代码尝试使用注入的属性[i.getClass.toString]获取类A的完全限定名称包+类名。。。这将导致仅获取对象类$Proxy27的代理名称。。。我还尝试了I.getClass.getCanonicalName;同样的结果


那么,是什么原因导致使用代理名而不是类名呢?我需要完全限定的名称

就像Spring将您的bean包装到AOP代理中一样,例如应用一些建议或维护注入bean的范围,例如当非单例bean被注入单例时。

就像Spring将您的bean包装到AOP代理中一样,例如,要应用一些建议或维护注入bean的范围,例如当非单例bean被注入单例时。

如果您想获得类名,请执行以下操作:

Class<?> targetClass = AopUtils.getTargetClass(bean);

如果要获取类名,请执行以下操作:

Class<?> targetClass = AopUtils.getTargetClass(bean);
这对我很有用:

Class<?> clazz = AopProxyUtils.ultimateTargetClass(proxy);
可在此处找到: 这对我很有效:

Class<?> clazz = AopProxyUtils.ultimateTargetClass(proxy);
可在此处找到:

你应该把你的问题放在问题中。这样有人会帮助你。你应该把你的问题放在问题中。这样有人会帮助你。同样的结果:/。。我注入的bean实现了Spring批处理项目处理器接口。所以根据你的建议,我做了一个putils.getTargetClassTempProcessor;它是执行代码BatchRunTaskListProcessorWrapper的类的属性,该代码也实现ItemProcessor。。但是这个调用给出了执行类BatchRunTaskListProcessorWrapper.processsame results的名称:/。。我注入的bean实现了Spring批处理项目处理器接口。所以根据你的建议,我做了一个putils.getTargetClassTempProcessor;它是执行代码BatchRunTaskListProcessorWrapper的类的属性,该代码也实现ItemProcessor。。但是这个调用给出了执行类BatchRunTaskListProcessorWrapper.process的名称