Spring - 确保bean是会话bean

时间:2013-11-22 17:09:38

标签: spring spring-mvc

我需要确保使用会话范围定义给定的bean。

我知道我可以使用ctx.isSingleton()ctx.isPrototype() ctx是我的(Web)ApplicationContext,但是没有isSession()

如果您想知道为什么我需要这样的话,请查看this question

相关:Can I programmatically determine if a spring bean is not singleton?

1 个答案:

答案 0 :(得分: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”或“session_scope”或类似内容,但我认为找到正确的字符串应该没问题。


获取DefaultListableBeanFactory的另一种方法是通过注入或实现BeanFactoryAware接口来获取它。


如果您的应用程序上下文属于GenericApplicationContext类型,那么您可以直接使用方法GenericApplicationContext.getBeanDefinition(String name)