java - 如何以编程方式确定 bean 的范围

标签 java spring scope

我试图通过名称找出 bean 的范围。

目前我发现的是:

BeanFactory#isPrototype(String name)
           #isSingleton(String name)

在我的例子中,我想知道这个 bean 是否在请求范围内。我可以使用 Spring 框架中的一些内部方法,但我想知道是否有一种“正确”的方法来实现它。

最佳答案

好问题。

BeanFactory 中没有方法 isRequst(),因为请求范围仅与 Web 相关。

我刚刚尝试找到执行此操作的方法但失败了。因此,如果您使用注释,我可以建议您使用一种解决方法。当你得到 bean 实例时说 bean.getClass().getAnnotation(Scope.class)。如果这返回 Scope 调用 value()

这不是“科学”方法,但希望对您来说足够好。

编辑

其他方法如下。请求范围 bean 存储在请求属性中。我现在不记得它的名字了,但你可以自己轻松找到它,只需在调试器中检查你的请求即可。然后检查是否存在对您的 bean 的引用。这种方法可能更好,但需要一些努力来调查请求属性和 Spring 框架使用的数据结构。

关于java - 如何以编程方式确定 bean 的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30163491/

相关文章:

java - 如何增强 Java 模式,使其在匹配项周围也包含特殊字符?

java - 是 <bean :define> and <c:set> the same in Java Struts?

javascript - 在 jquery 中访问 Spring MVC 模型对象

java - 为什么使用 Java 配置配置的 JPAPagingItemReader 的销毁方法 'close' 失败?

java - 在 IIS 服务器上运行的 Angular FE:对 http://localhost:8080/api 的 POST 请求生成 net::ERR_CONNECTION_REFUSED

javascript - JS : Return Values Between Functions - Scope

javascript - 除了函数本身之外,不能在 jQuery 的 .ajax 方法中使用返回的数据

java - 基于运输时间的热图/轮廓(反向等时轮廓)

java - 理解这段代码(从整数中提取颜色分量)

django - self.scope ['user' ] 在 Django channel 中一直显示为 AnonymousUser