- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
据我所知,要使用@Annotations(或 C# 中的 [Attributes]),您必须引用类元数据,以便您可以询问该类是否被注释(属性化)。
我的问题是 JSF 实现如何找到所有用 @ManagedBean 注释的类?它是否扫描类路径中的所有类?或者是否有一种方法可以实际“查询”JVM 以获取带注释的类?
我问这个是因为当我将带注释的支持 bean 直接放在我的 web 项目中时,没有问题。但是我在 JAR 文件中定义的 beans(可跨项目重用)没有注册。有什么我必须告诉 MyFaces 以指示它查看哪些 JAR 文件吗?
此外,使用注释引入了许多不错的编程模式。我想知道我是否能以某种方式找到所有带注释的类...
最佳答案
My question is how does JSF implementation find all classes annotated with @ManagedBean? Does it scan all of the classes in the class path? Or is there a way to actually "query" the JVM for the annotated classes?
首先浏览 com.sun.faces.application.annotation.AnnotationManager
在 Mojarra来源。请注意,这不是 API 的一部分,而是特定于实现的。
如果您打算在自己的项目中使用此类工具,我建议使用 Reflections为此而不是在家里种植它。
Set<Class<?>> classes = reflections.getTypesAnnotatedWith(SomeAnnotation.class);
在 Java EE 环境中,更好的做法是改用 CDI。
I'm asking this because when I put my annotated backing beans in my web project directly, there's no problem. But the beans that I define in the JAR files (to be reusable across projects) are not registered. Is there something that I have to tell MyFaces to direct it which JAR files to look at?
要让 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 specification的第11.4.2章中描述的方式.
11.4.2 Application Startup Behavior
...
This algorithm provides considerable flexibility for developers that are assembling the components of a JSF-based webapplication. For example, an application might include one or more custom UIComponent implementations, along withassociated Renderers, so it can declare them in an application resource named “/WEB-INF/faces-config.xml”with no need to programmatically register them with Application instance. In addition, the application might chooseto include a component library (packaged as a JAR file) that includes a “META-INF/faces-config.xml” resource.The existence of this resource causes components, renderers, and other JSF implementation classes that are stored in thislibrary JAR file to be automatically registered, with no action required by the application.
关于java - JSF 如何找到用@ManagedBean 注释的bean?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3717376/
有什么区别 和 您能解释一下这两者之间有什么区别吗? 最佳答案 它是一个 XML 命名空间,用于分隔可能存在冲突的元素名称,因此没有真正的区别。 XML Namespaces 关于java -
我刚刚浏览了两个 Web 应用程序,在两个项目的“applicationContext.xml”文件中都有一个标记 ... 另一个是 ... 谁能给我解释一下有什么区别吗? 最佳答案 没有语
我一直在尝试了解 WebSphere Commerce 中的 Java bean,但我真的很困惑。请帮帮我。我需要知道: What is the difference between EntityBe
自从我们更新到 grails 2.0.1(从 2.0.0 开始)以来,通过 bean 字段显示的所有 bean 都错误地显示为“withBean”字段的第一个属性。在我下面发布的示例中,所有 [fir
我有一个 bean,我将另一个 beanlist 放入其中,并且我想访问该内部 bean。 我的第一个 Bean 是: public class FirstDTO { private String F
我正在尝试将 CSS 和 JS 添加到 spring MVC 项目中的 JSP 页面,以便我在 dispatcher-servlet.xml 中包含了 js/css 文件夹的引用,如下所示:
当我将请求传递给 RestController 时,出现以下错误。 org.springframework.beans.factory.xml.XmlBeanDefinitionStoreExcept
我看到很多示例将 bean 标记为实体 bean (@Entity) 和命名 bean (CDI),以避免创建 2 个类(托管 bean 和实体 bean)并利用 Bean 验证以便可以执行验证在客户
在我的理解中, session 总是意味着有状态。考虑 servlet session 对象, 想想 cookie。如果 session 是无状态的,我认为我们根本不需要 session 。 在jee
我完全是Spring框架的初学者。我当时正在玩一个创建对象实例的示例。因此需要您的帮助! 看看这个例子: MainApp.java: import org.springframework.contex
这个问题在这里已经有了答案: What is a JavaBean exactly? (23 个回答) 关闭 7 年前。 我已经阅读了有关 EJB、Java Beans 的内容,但是我仍然对“bea
我刚开始使用 Spring-Framework,实际上我正在使用 spring-boot 库。我有以下问题: 我知道在 @Configuration 类中使用 @Bean 注册的 bean 默认是单例
我对下面提到的场景中使用Spring Framework时会创建的实例数量有疑问: bean配置是这样的 or 默认情况下,bean "a"有 singleton scope .所以
在我的 Spring-Module.xml 中,我有两个 bean: ... ... 我像这样实例化我的类: Applicat
@Autowired private Map departments; 我的 spring 配置文件 只要使用 @Autowired 需要日期,它就可以正常工作 同样, 如何使用没有属性
我已经为 ComboBox 设置了 ContainerDataSource this.comboBox.setContainerDataSource(container)。这个容器是一个 BeanIt
为了支持流畅的编程风格,我最近修改了我们的 Java Beans setter 方法以返回 Bean 类。但是现在 Java Beans Activation Framework (rel 1.1)
有人可以告诉我在我的 ApplicationContext 中我必须使用 beans:bean 而不是 bean 的什么以及如何修复它。
我有如下配置: batch:job id="reconciliationJob" job-repository="jobRepository" restartable="true" 在应用程序上下文启
我已经为 Test_flow 创建了简单的测试套件,但是当我尝试运行该流程时出现错误。 java.lang.RuntimeException: org.mule.api.config.Configur
我是一名优秀的程序员,十分优秀!