当前位置: 首页 > 知识库问答 >
问题:

JSF2.0 Tomcat7中@named和@managedbean注释之间的区别[重复]

裴钧
2023-03-14

这可能是一个很难回答的问题,但是在很多教程和示例中,我看到这些注释的使用就好像它们做了同样的事情。

但是,我使用@named时遇到了一些限制(尤其是依赖注入等),我找不到解释差异的源,如果有人能给出一个大致的概述,说明什么时候使用这两个,我将非常感谢。

共有1个答案

谷出野
2023-03-14

@named为CDI托管bean提供一个EL名称,以便在JSF或JSP等视图技术中使用。请注意,在CDI应用程序中,不需要@named注释来使bean由CDI管理(感谢@karl的评论)。

@managedbean使bean由JSF管理,您可以:

  • 将其注入其他@managedbean注释bean(但不是@named bean!)
  • 通过表达式语言从视图访问

有关注入在两种bean之间如何工作的进一步信息,请参阅此相关问题。

注意,这与bean的作用域也有区别。它们来自不同的包,但名称相同(jsf:javax.faces.bean,CDI:javax.enterprise.context,因此如果包含了错误的类,这往往是错误和混乱的来源。

根据我的经验:您应该尽可能使用CDI bean,因为它们比JSF托管bean更灵活。唯一的缺点是,CDI不知道视图范围,因此您需要回到@ManagedBean或使用某些第三方扩展(如Seam)。

 类似资料:
  • 我试图使用@consume注释bean使用通过spring JmsTemplate发送的JMS消息。当使用JMSTemplate发送消息时,使用者不接收消息。 然而,当使用Camel的ProducerTemplate发送时,将接收消息。 @org.springframework.jms.annotation.jMSListener和@org.apache.camel.consume之间有什么区别?

  • 问题内容: 问题: 1)和之间的区别? 我已经读过,两者都消除了将连接代码放入XML中的必要性,但是并没有获得两者之间的区别。 2)之间有什么区别,和? -何时使用哪个? -每个优点/缺点是什么? 问题答案: 并且确实是非常不同类型的注释。 以及类似的注释(,等)及其对应的JSR-330允许您声明要通过自动扫描拾取的bean , 或者它们为类注册了bean定义,因此它们大致等效于使用以下命令声明指

  • 问题内容: 今天,我试图使用Hibernate作为ORM创建一个应用程序。因此在创建时我有一个疑问。使用Hibernate映射文件(.hbm文件)或注释的最佳实践是什么?它的优缺点是什么?请帮助我理解。 问题答案: 没有功能上的差异。您可以使用两种方法(几乎)执行相同的操作 xml文件是在Java具有注释(在1.5中添加)之前使用的,因此可以将它们视为过时的映射方式 通常首选使用JPA注释,而不是

  • 问题内容: 方法和注释之间有什么区别?他们是一样的吗? 例如,这是: 与: 问题答案: 它们都达到相同的结果。通常不会使用注解(),因为您不会用看起来都一样的样板分配来填充代码。 请注意,为了使用注释,您的测试类应在其方法中进行注释或包含对的调用。

  • 问题内容: 可能重复: JavaScript中的“(function(){})()”和“(function(){}())”在功能上是否相等? 这是我还没有弄清楚的事情,但是我一直在使用function(){}()只是因为如果添加括号,我的VIM语法高亮显示就搞砸了,尽管我已经看到了(function(){})()大约很多次,也许是IE的事情? 编辑: 问题答案: 基本上,括号是一种约定,用于表示紧

  • 问题内容: Django 有两种方法,和。该文档说: 与gregation()不同,annotate()不是终端子句。annotate()子句的输出是QuerySet。 它们之间还有其他区别吗?如果没有,那为什么存在呢? 问题答案: 我将重点放在示例查询而不是文档中的引用上。A计算整个查询集的值。计算查询集中每个项目的汇总值。 聚合 返回包含查询集中所有书籍的平均价格的字典。 注解 q 是书籍的查