我會嘗試:
AbstractApplicationContext abstractContext = (AbstractApplicationContext) context;
BeanFactory = beanFactory = abstractContext.getBeanFactory();
BeanDefinition beanDefinition = ((DefaultListableBeanFactory)beanFactory).
getBeanDefinition("beanName");
boolean isSessionScope = "session".equals(beanDefinition.getScope());
我不是100%肯定,如果beanDefinition.getScope()返回 「會議」 或 「session_scope」 或類似的東西,但我認爲,應該沒有問題,你找到正確的字符串。
另一種方式來獲得DefaultListableBeanFactory
將通過注射得到它或實現BeanFactoryAware
接口。
如果你的應用程序上下文是GenericApplicationContext
類型,那麼你可以直接使用該方法GenericApplicationContext.getBeanDefinition(String name)
。
Thanks - This is close - 首先,ApplicationContext接口沒有getBeanFactory()方法,您需要將其轉換爲AbstractApplicationContext的實例。另一種選擇是讓Bean實現BeanFactoryAware,以便注入BeanFactory。即使這樣,BeanFactory接口也不會實現getBeanDefinition,所以您必須將其轉換爲DefaultListableBeanFactory的實例(似乎很簡單..)。如果你更新你的答案,我可以接受它嗎? –