确定Bean的运行时类型
确定特定bean的运行时类型并非易事。 Bean元数据定义中的指定类只是初始类引用,可能与声明的工厂方法结合使用,或者是FactoryBean类,这可能导致Bean的运行时类型不同,或者在实例的情况下根本不进行设置 级工厂方法(通过指定的factory-bean名称解析)。 此外,AOP代理可以使用基于接口的代理包装Bean实例,而目标Bean的实际类型(仅是其实现的接口)的暴露程度有限。
找出特定bean的实际运行时类型的推荐方法是对指定bean名称的BeanFactory.getType调用。 这考虑了上述所有情况,并返回了BeanFactory.getBean调用将针对相同的Bean名称返回的对象类型。