Wie zu verwenden CDI-Qualifikation mit mehreren Klassen-Implementierungen?

Ich bin neu in der Java EE/JSF und nun Lesen Sie über die CDI-Qualifier - die Möglichkeit zum wechseln der Klasse Umsetzung. Das ist großartig, aber ich habe eine Frage. Soweit ich das verstehe kann ich ändern, Klasse Umsetzung unter Nutzung der qualifier, aber ich brauche, um es zu ändern wo ich den Einsatz dieser Implementierung. Was ist die beste Lösung, um es in einem Ort? Mit meinem kleinen wissen über Java EE dachte ich dieses.

Können sich vorstellen, dass wir die Erstellung von einfachen Rechner-Anwendung. Wir brauchen paar Klassen:

  1. Calculator (basic-Implementierung des Rechners)
  2. ScientificCalculator (wissenschaftliche Umsetzung der Rechner)
  3. MiniCalculator (mit mindestens Potentialität)
  4. MockCalculator (für unit-tests)
  5. Qualifier @Calculator (anzeigen wird die tatsächliche Umsetzung der Rechner; sollte ich die Qualifikation für jede Implementierung?)

Ist hier die Frage. Ich habe vier Implementierungen der Rechner und ich will einer von Ihnen in wenigen Orten, aber nur eine zur Zeit (in der ersten Projekt-phase I verwenden MiniCalculator, dann Calculator und so weiter). Wie kann ich eine änderung der Implementierung ohne änderung des Codes in jedem Ort, wo ein Objekt injiziert wird? Sollte ich die Fabrik, die verantwortlich für die Injektion und wird als method injector? Ist meine Lösung korrekt und aussagekräftig?

Fabrik

@ApplicationScoped
public class CalculatorFctory implements Serializable {
    private Calculator calc;

    @Produces @Calculator Calculator getCalculator() {
        return new Calculator();
    }
}

Klasse, die verwendet Calculator

public class CalculateUserAge {
    @Calculator
    @Inject
    private Calculator calc;
}

Ist dies die richtige Lösung? Bitte korrigieren Sie mich, wenn ich falsch bin oder ob es eine bessere Lösung. Vielen Dank!.

InformationsquelleAutor pepuch | 2013-03-16

Schreibe einen Kommentar