如何查找Spring管理的bean的范围

7

是否可以确定一个bean是原型bean还是其他类型的bean?

我希望在应用程序上下文的变体之一中有一个方法,例如getScope或getBeanMetaData...

1个回答

12
你可以向BeanFactory“询问”BeanDefintion,它包含了作用域。
 @Autowired
 ConfigurableApplicationContext applicationContext;
 ...

 applicationContext.getBeanFactory().getBeanDefinition("beanName").getScope()

(getBeanFactory() 是在 ConfigurableApplicationContext 中定义的,它是一个接口,除了 StubWebApplicationContext 外,每个具体的 ApplicationContext 都实现了它。)


1
“(...) is implemented by every (...)" - 不完全正确。最好使用ConfigurableApplicationContext(不带Web),因为它由更具体的类实现,并且还提供了必要的方法。 - oberlies
@oberlies:你是对的。我修改了我的答案:使用ConfigurableApplicationContext而不是ConfigurableWebApplicationContext - Ralph

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接