gpt4 book ai didi

java - 为什么要有多个托管 bean?

转载 作者:行者123 更新时间:2023-11-30 06:37:34 24 4
gpt4 key购买 nike

这更像是一个一般性问题,以便我更好地了解 JSF 和托管 bean。因此,当人们拥有多个托管 bean 时,仅仅是因为他们想将具有相同作用域(RequestScoped、ApplicationScoped、SessionScope ...)的方法组合在一起吗?还是有其他原因?如果将具有不同范围的托管 bean 注入(inject)到另一个托管 bean 中会发生什么?以及他们为什么要将一个具有不同作用域的 bean 注入(inject)到另一个 bean,我是否可以根据需要从 JSF 访问不同的 bean,而不是将一个 bean 注入(inject)到另一个?

最佳答案

So when people having multiple managed bean, is it solely because they want to group methods with the same scoped(RequestScoped, ApplicationScoped, SessionScope...) together? Or is there some other reason?

这取决于 bean 持有的数据和 bean 的职责。如果它包含请求范围内的数据(例如表单输入值和表单操作),那么该 bean 应该进入请求范围。如果它包含 session 范围内的数据(例如登录用户、特定于用户的设置,如语言环境等),那么该 bean 应该进入 session 范围。如果它包含应用程序范围的数据(例如下拉值和其他应用程序范围的常量),那么该 bean 应该进入应用程序范围。这在逻辑上是有道理的。

What would happen if you inject managed bean with different scope into another?

您只能在另一个 bean 中注入(inject)相同或更广泛范围的 bean。例如。请求、 session 或应用程序范围的 bean 可以注入(inject)到请求范围的 bean 中。 JSF 只是将其设置为目标 bean 的属性。这没有副作用。当您尝试在另一个 bean 中注入(inject)范围较窄的 bean 时,JSF 已经会出错。您不能在 session 范围的 bean 中注入(inject)请求范围的 bean。这是完全有道理的。在同一个 session 中可以有多个请求范围的 bean,JSF 应该选择哪一个?

and why would they want to inject one bean with different scope to another, can I not just from JSF access different bean base on my need instead of inject one bean to another?

它只会添加讨厌的样板代码。为什么不让 JSF 透明地处理它呢?您无需亲自接管 JSF 的职责。注入(inject)很便宜,即使您在特定用例中不需要注入(inject)的 bean,也不会造成伤害。

关于java - 为什么要有多个托管 bean?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3347560/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com