Bitte erläutern Sie die @Produces-Annotation in CDI
Ich habe über die Annotation @Produces in CDI gelesen, aber ich verstehe ihre Verwendung nicht.
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();
}
}
genommen von:http://www.jboss.org/jdf/quickstarts/jboss-as-quickstart/guide/GreeterQuickstart/#GreeterQuickstart-
Woher weiß der Container, dass er eine Producer-Methode aufruft? Wie ruft der Container den @produces-EntityManager auf, wenn ich einen EntityManager injiziere? Und wie würde eine getLogger-Producer-Methode aufgerufen werden?
Ich sehe auch nicht den Grund, all die Schwierigkeiten durchzustehen.