栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

JSF如何找到用@ManagedBean注释的bean?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JSF如何找到用@ManagedBean注释的bean?

我的问题是,JSF实现如何找到使用@ManagedBean注释的所有类? 它会扫描类路径中的所有类吗?还是有一种方法实际上可以“查询”
JVM中的带注释的类?

首先

com.sun.faces.application.annotation.AnnotationManager
在Mojarra来源中浏览。请注意,这不是API的一部分,而是特定于实现的。

如果您打算将此类工具用于自己的项目,则建议对此使用“
反射”,而不是自行开发。

Set<Class<?>> classes = reflections.getTypesAnnotatedWith(SomeAnnotation.class);

在Java EE环境中,更好的方法是使用CDI。


我之所以这样问是因为,当我将带注释的后备bean直接放在Web项目中时,没有问题。
但是,我在JAR文件中定义的Bean(可在项目之间重复使用)未注册。我必须告诉MyFaces指导它查看哪些JAR文件吗?

要使JSF从JAR文件加载任何带注释的受管bean,必须将

/meta-INF/faces-config.xml
文件放入JAR文件。只需与JSF
2.0兼容的
<faces-config>
声明就足以使JSF扫描JAR文件中是否有任何有趣的带注释的类。如果
/meta-INF/faces-config.xml
JAR文件中不存在该文件,则JSF不会扫描JAR文件以提高加载性能。

最小的JSF 2.0兼容

faces-config.xml
文件如下所示:

<?xml version="1.0" encoding="UTF-8"?><faces-config    xmlns="http://java.sun.com/xml/ns/javaee"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"    version="2.0"></faces-config>

将其存储在

meta-INF
JAR 的文件夹中。

这是通过JSF
2.0规范的第11.4.2章中介绍的方式进行的。

11.4.2应用程序启动行为

该算法为组装基于JSF的Web应用程序的组件的开发人员提供了相当大的灵活性。例如,一个应用程序可能包括一个或多个自定义UIComponent实现以及关联的Renderer,因此它可以在名为“
/WEB-INF/faces-config.xml”的应用程序资源中声明它们,而无需通过编程方式在Application中注册它们。实例。
另外,应用程序可能选择包括一个组件库(打包为JAR文件),该组件库包含“ meta-INF / faces-config.xml”资源。
此资源的存在将导致自动注册存储在此库JAR文件中的组件,渲染器和其他JSF实现类,而应用程序无需执行任何操作。

也可以看看:

  • 具有共享代码的多个JSF项目的结构


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/438171.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号