The presence of this annotation on a
class automatically registers the class with the runtime as a UIComponent. The value of the value() attribute is taken to
be the component-type and the fully qualified class name of
the class to which this annotation is attached is taken to be the
component-class. The implementation must guarantee that for
each class annotated with FacesComponent, found with the
scanning algorithm in section JSF.11.5, javax.faces.application.Application.addComponent(java.lang.String,java.lang.String)
is called, passing the derived component-type as the first
argument and the derived component-class as the second
argument. The implementation must guarantee that all such calls to
addComponent() happen during application startup time
and before any requests are serviced.

The value of this annotation
attribute is taken to be the component-type with which
instances of this class of component can be instantiated by
calling javax.faces.application.Application.createComponent(java.lang.String)