Möglicherweise möchten Sie Spring in Ihre Liste der von Ihnen in Betracht gezogenen Abhängigkeitsinjektions-Frameworks aufnehmen. Hier einige Antworten auf Ihre Fragen:
Kopplung an das Framework
Pico - Pico neigt dazu, die Setter-Injektion zu unterbinden, aber ansonsten müssen Ihre Klassen nichts über Pico wissen. Es muss nur die Verkabelung wissen (gilt für alle DI-Frameworks).
Guice - Guice unterstützt jetzt die Standard- JSR 330- Annotationen, sodass Sie keine Guice-spezifischen Annotationen mehr in Ihrem Code benötigen. Spring unterstützt auch diese Standardanmerkungen. Das Argument, das die Guice-Leute verwenden, ist, dass diese ohne einen Guice-Annotationsprozessor keine Auswirkungen haben sollten, wenn Sie sich für ein anderes Framework entscheiden.
Spring - Spring soll es Ihnen ermöglichen, das Spring-Framework in Ihrem Code nicht zu erwähnen. Da sie viele andere Helfer / Dienstprogramme usw. haben, ist die Versuchung jedoch ziemlich groß, vom Spring-Code abhängig zu sein.
Performance
Pico - Ich bin mit den Geschwindigkeitseigenschaften von Pico nicht allzu vertraut
Guice - Guice wurde entwickelt, um schnell zu sein, und der in der Referenz erwähnte Vergleich hat einige Zahlen. Wenn die Geschwindigkeit im Vordergrund steht, sollte entweder Guice oder die Verkabelung von Hand in Betracht gezogen werden
Frühling - Frühling kann langsam sein. Es wurde daran gearbeitet, es schneller zu machen, und die Verwendung der JavaConfig-Bibliothek sollte die Dinge beschleunigen.
Benutzerfreundlichkeit
Pico - Einfach zu konfigurieren. Pico kann einige Autodrahtentscheidungen für Sie treffen. Nicht klar, wie es auf sehr große Projekte skaliert.
Guice - Einfach zu konfigurieren, fügen Sie einfach Anmerkungen hinzu und erben von AbstractModule, um die Dinge miteinander zu verbinden. Skaliert gut auf große Projekte, da die Konfiguration auf ein Minimum beschränkt ist.
Spring - Relativ einfach zu konfigurieren, aber die meisten Beispiele verwenden Spring XML als Konfigurationsmethode. Spring XML-Dateien können im Laufe der Zeit sehr groß und komplex werden und das Laden einige Zeit in Anspruch nehmen. Verwenden Sie eine Mischung aus Feder und handgekurbelter Abhängigkeitsinjektion, um dies zu überwinden.
Gemeinschaftsgröße
Pico - Klein
Guice - Mittel
Frühling - groß
Erfahrung
Pico - Ich habe nicht viel Erfahrung mit Pico, aber es ist kein weit verbreitetes Framework, daher wird es schwieriger sein, Ressourcen zu finden.
Guice - Guice ist ein beliebtes Framework und sein Fokus auf Geschwindigkeit ist willkommen, wenn Sie ein großes Projekt haben, das Sie in der Entwicklung häufig neu starten. Ich habe Bedenken hinsichtlich der Verteilung der Konfiguration, dh es ist nicht leicht zu erkennen, wie unsere gesamte Anwendung zusammengesetzt ist. In dieser Hinsicht ist es ein bisschen wie AOP.
Frühling - Frühling ist normalerweise meine Standardwahl. Das XML kann jedoch umständlich und die daraus resultierende Verlangsamung ärgerlich werden. Am Ende verwende ich oft eine Kombination aus handgefertigter Abhängigkeitsinjektion und Feder. Wenn Sie tatsächlich eine XML-basierte Konfiguration benötigen, ist Spring XML recht gut. Spring hat auch große Anstrengungen unternommen, um andere Frameworks für Dependency Injection benutzerfreundlicher zu machen. Dies kann nützlich sein, da sie dabei häufig bewährte Methoden verwenden (JMS, ORM, OXM, MVC usw.).
Verweise