Por favor explique la anotación de @Produces en CDI

He leído sobre la anotación de @Produces en CDI, pero no entiendo su uso.

public class Resources {

// Expose an entity manager using the resource producer pattern
@SuppressWarnings("unused")
@PersistenceContext
@Produces
private EntityManager em;                                        // 

@Produces
Logger getLogger(InjectionPoint ip) {                            // 
    String category = ip.getMember()
                        .getDeclaringClass()
                        .getName();
    return Logger.getLogger(category);
}

@Produces
FacesContext getFacesContext() {                                 // 
    return FacesContext.getCurrentInstance();
}

}

tomado de:http://www.jboss.org/jdf/quickstarts/jboss-as-quickstart/guide/GreeterQuickstart/#GreeterQuickstart-

¿Cómo sabe el contenedor para llamar a un método productor? Si inyecto un EntityManager, ¿cómo llama el contenedor al EntityManager de @produces? ¿Y cómo se llamaría a un método de producción getLogger?

Tampoco veo la razón para pasar por todos los problemas.

Respuestas a la pregunta(2)

Su respuesta a la pregunta