gpt4 book ai didi

jsf - 注入(inject) vs ManagedProperty

转载 作者:行者123 更新时间:2023-12-03 23:16:24 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Backing beans (@ManagedBean) or CDI Beans (@Named)?

(5 个回答)


6年前关闭。




好的,所以我有一个需要引用另一个 (@NoneScoped) bean 的 JSF 支持 bean。

我应该@Inject 还是使用@ManagedProperty 从容器中获取实例引用?

为什么使用一种而不是另一种,在我看来,这两种方法可以达到同样的目的。

最佳答案

@ManagedProperty@NoneScoped来自 JSF 2.0 规范,而 @Inject来自 CDI 规范。

如果您只是在开发一个不使用任何其他 JavaEE 6 特性的 servlet 应用程序,那么请使用 @ManagedProperty。 .该注释对 @Inject 也有优势。 :您可以使用 EL(表达式语言)(although there are workarounds to get that in CDI)。

两个注释/容器似乎都实现了“相同的事情”,但方式却截然不同,并且它们与不同的容器一起工作。由 CDI 管理的 Bean 将可用于 JSF,但反之则不行。如果您使用 JSF 特定的注释来注释您的 bean,那么请忘记使用自定义限定符、拦截器、生产者方法等。我通常更喜欢使用 CDI 的方法,因为最后它更复杂,但选择取决于您的实际需求.

总结一下,您似乎只是在使用 JSF 功能,然后 坚持@ManagedProperty (CDI 无法理解 @NoneScoped 注释,在 CDI 中,如果未指定,所有 bean 都在 @Default 范围内)。在您的项目中切换到 CDI 可能意味着不仅要替换 @ManagedProperty对于 @Inject一个,但你所有的@RequestScoped (等等)用于特定于 CDI 的那些。

关于jsf - 注入(inject) vs ManagedProperty,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12215979/

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