我有一个未知范围的 bean 的名称。我试图以可靠的方式(处理代理等)确定它的静态类型(用 注释的类@Component
,或工厂方法的返回类型)。@Bean
BeanFactory.getType(beanName)
给我一个代理类。BeanFactory.getBeanDefinition(beanName).getResolvableType()
在很多情况下给了我一个EmptyType
.
用于确定 bean 类型的所有实用程序方法AopUtils.getTargetClass()
都AopProxyUtils.ultimateTargetClass()
需要一个实际实例,对于非单例,我无法安全地获得它。
如果 bean 是由工厂方法创建的,我可以通过找到该方法beanDefinition.getSource()
并从那里获取其返回类型。@Component
但是对于带注释的类来说似乎没有任何可能。我可以获得类名,但不能获得类本身(并且按名称加载它是我宁愿避免的一罐蠕虫)。
有什么我可以在这里做的吗?