我试图通过其名称找出bean的范围.
到目前为止我发现的是:
beanfactory#isPrototype(String name) #isSingleton(String name)
在我的情况下,我想知道bean是否在请求范围内.我可以使用Spring框架中的一些内部方法,但我想知道是否有“正确”的方法.
解决方法
好问题.
beanfactory中没有isRequst()方法,因为请求范围仅与Web相关.
我只是试图找到这样做的方法而失败了.所以,如果你使用注释,我可以建议你一个可行的解决方法.当你获得bean实例时说bean.getClass().getAnnotation(Scope.class).如果这返回Scope调用值().
这不是“科学”方法,但希望对你来说足够好.
编辑
其他方法如下.请求范围bean存储在请求属性中.我现在不记得它的名字,但你可以自己轻松找到它,只需在调试器中检查你的请求.然后检查对bean的引用是否存在.这种方法可能更好,但需要一些努力来研究Spring框架使用的请求属性和数据结构.