2013-11-22 81 views

回答

1

我會嘗試:

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)

+0

Thanks - This is close - 首先,ApplicationContext接口沒有getBeanFactory()方法,您需要將其轉換爲AbstractApplicationContext的實例。另一種選擇是讓Bean實現BeanFactoryAware,以便注入BeanFactory。即使這樣,BeanFactory接口也不會實現getBeanDefinition,所以您必須將其轉換爲DefaultListableBeanFactory的實例(似乎很簡單..)。如果你更新你的答案,我可以接受它嗎? –