如何获得一个真正的 bean class 而不是 CGlib 代理?

How to get a bean real class instead CGlib proxy?

我有一个配置bean:

@Configuration
@ConfigurationProperties(prefix = "core.organizations")
public class PermissionConfig {
...
}

我想得到它的真实class。如果我通过方法 bean.getClass() 获取它,我将改为获取 CGlib 代理。

我试过使用 AopUtils.getTargetClass(bean)AopProxyUtils.ultimateTargetClass(bean),但它 returns 是同一个代理

根据spring github ticket

AopUtils.getTargetClass(bean) 不适用于注释为 @Configuration 的 bean。我用 ClassUtils.getUserClass(bean) 作为我的 bean。有效

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/util/ClassUtils.html#getUserClass-java.lang.Object-

您可以使用 ClassUtils.getUserClass(对象 bean)获取 CGLIB 生成的子 class 的父 class。