2017-02-23 2 views
0

Ich versuche, jsf2 Anwendung von managed beans zu CDI zu konvertieren.CDI Produzent Vorteil

Also lerne ich und entdecke die Vorteile von CDI. Es scheint großartig, aber es gibt etwas, das ich nicht verstehe mit producer.

Über CDI Ich lese, dass einer der Vorteile ist, coupling zu reduzieren. Ich habe etwas experimentiert mit einer Schnittstelle, einige Implementierung, die @default, @alternate, @inject. Und es macht die Arbeit. In diesem Fall kann ich die Kopplung "Reduktion" sehen.

Aber wenn ich einen Hersteller für die Protokollierung implementieren, sehe ich es nicht.

Für jetzt bin ich mit so etwas wie

Logger log = LoggerFactory.getLogger(MyClass.class); 

Mit CDI, nach dem Hersteller zu schaffen, ich habe

@Inject 
Logger logger; 

Ok, es ist kürzer, aber die Logger-Klasse ist immer noch gekoppelt mit z.B. log4j.

Also wenn ich eine andere Logger-Bibliothek verwenden möchte, muss ich noch alle meine Klassen ändern.

Gibt es etwas, das ich nicht verstanden habe?

Antwort

2

Ihre Idee ist nicht schlecht, und es kann tatsächlich helfen, den verwendeten Logger zu abstrahieren. Sie müssen jedoch möglicherweise einen Protokolladapter wie slf4j (https://www.slf4j.org/) oder commons-logging verwenden, der Ihnen bei der Auswahl zwischen verschiedenen Logger-Implementierungen (log4j, etc.) hilft, aber die Protokollierungsschnittstelle beibehält.

Sie halten dann eine einzige Producer-Methode in CDI, die nach Belieben angepasst werden kann.