wake-up-neo.net

Frühling und Guice zusammen oder einfach Frühling

Ich starte eine neue Java-Web-App von Grund auf neu.

Ich habe nicht viel Erfahrung mit Spring Framework, aber ich weiß, dass ich einige seiner Funktionen nutzen möchte, z. B. Transaccions Management.

Auf der anderen Seite mag ich Guice für die Abhängigkeitsinjektion sehr.

Ich weiß, dass Guice und Spring zusammenarbeiten können: http://www.jroller.com/mindcrime/entry/an_example_of_integrating_guice

Bevor ich mit dem Entwerfen meiner Anwendung begann, wollte ich wissen, ob jemand Probleme mit dieser Vorgehensweise hatte.

Außerdem gefällt mir an Guice, dass Sie keine XML-Konfigurationsdatei benötigen, sondern nur Java-Module, die kürzer und einfacher zu lesen sind. Gibt es eine Alternative zu XML-Konfigurationsdateien auf Spring, ähnlich wie bei Guice?

17
csalazar

Ich denke, Frühling allein ist gut genug für Unternehmensanwendungen.

Frühling dosent brauchen auch XML !!! Moderne Spring Apps verwenden JavaConfig und minimal configuration. Schauen Sie sich Spring Boot Guides an. Ganze Spring-Apps können überhaupt kein XML verwenden.

Guice ist nett, aber sehr begrenzt. Mit Spring ist es möglich, Webanwendungen oder REST Anwendungen mit Transaktionen und Beständigkeit sehr einfach und schnell zu schreiben. Mit Guice ist das komplizierter.

15
MariuszS

Wenn Sie gerade erst anfangen, empfehle ich Ihnen die Verwendung von https://github.com/spring-projects/spring-boot

Es verfügt über eine großartige Autokonfigurationsfunktion und spart das Schreiben von Code auf der Kesselplatte. Dank eingebettetem Tomcat kann ich Sie sogar von der Verwendung des Anwendungsservers entbinden. Die Implementierung eines einfachen MVC-Controllers (der als REST Endpunkt verwendet werden kann) sieht beispielsweise folgendermaßen aus:

@Controller
@EnableAutoConfiguration
public class SampleController {

    @RequestMapping("/")
    @ResponseBody
    String home() {
        return "Hello World!";
    }

    public static void main(String[] args) throws Exception {
        SpringApplication.run(SampleController.class, args);
    }
}

Jetzt können Sie Java -jar your_package.jar ausführen und das ist alles. Sie erhalten auch Transaktionsverwaltung, Datenbankintegration usw. Weitere Beispiele finden Sie unter dem angegebenen Link, insbesondere unter https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples Verzeichnis

11
Jakub Kubrynski

Spring hat jetzt eine Java-basierte Annotation-Konfiguration für zwei Hauptversionen. Sie müssen keine einzige Zeile XML schreiben (nicht einmal eine web.xml!)

Ich habe mit Guice und Spring gearbeitet. Guice ist ausreichend für kleinere Projekte, die DI benötigen. Wenn Sie Spring für MVC oder Transaktionsunterstützung verwenden, können Sie auch nur DI verwenden. Guice hat auch keine gute Profilunterstützung wie Spring - Sie müssen die Module manuell wechseln, wenn Sie separate Beans für lokale Entwicklung, Testumgebungen und Produktion benötigen.

6
Tom G

Google Guice verfügt fast über eine 1: 1-Zuordnung für alle Konzepte von Spring Dependency Injection, bietet jedoch noch einige weitere interessante Funktionen:

1. Es ist alles in Java. Google Guice enthält alle Konfigurationen in Java-Code, sodass wir uns nicht mit XML-Konfigurationen oder Ähnlichem befassen müssen.

2. Bessere Fehlermeldungen. Guice hat einen Abfangjäger, der schönere Stapelspuren aufräumt und wieder auswirft. Der Frühling spuckt einfach alles aus.

3. Just-in-Time-Bindung (oder implizite Bindung) . Das bedeutet, wenn Sie einen Null-Argument-Konstruktor haben, ist keine zusätzliche Bindung erforderlich. Fügen Sie sie einfach ein! Dasselbe gilt, wenn Sie versuchen, einen Konstruktor mit mehreren Argumenten zu injizieren, die entweder Null-Argument-Konstruktoren sind oder bereits injiziert wurden. Es ist keine zusätzliche Konfiguration erforderlich. Nochmals, spritze es einfach!

4. Eifrige/faule Spritze Wenn du mit Spring spritzt, heißt es, dass ich nichts oder alles spritze. Es gibt eine Option in Guice, um faul zu injizieren, was bedeutet, dass nur der Unterabschnitt des Abhängigkeitsgraphen erstellt wird, den ich benötige. Dies bedeutet ein paar Dinge - Sie brauchen nicht diese seltsamen speziellen Frühlings-Testdateien, Guice injiziert viel schneller beim Testen und Sie können Integrationstests in Eclipse mit minimalem bis keinem Setup ausführen!

5. Bindung nach Typen. Dies unterscheidet sich von Spring, der nach Namen bindet. Wenn Sie im Frühjahr versehentlich zwei Instanzen an denselben Namen binden, schlägt Spring unbemerkt fehl und verwirrt Sie noch mehr, indem Sie die zuletzt eingegangene Bindung übernehmen. Spring bietet eine Option "Binden nach Typ", aber lassen Sie sich nicht täuschen - die zugrunde liegende Implementierung ist immer noch ein String.

Quelle: https://github.com/google/guice

2

Ich würde auch vorschlagen, dass Sie sich HK2 für einen leichten J2SE DI-Motor ansehen. Es ähnelt Guice und CDI und bietet viele interessante Erweiterungsfunktionen. Es funktioniert auch mit Guice und Spring über bidirektionale Brücken. Sie können anfangen, über HK2 hier zu lernen: http://hk2.Java.net/ . Informationen zur Guice-Brücke finden Sie hier: https://hk2.Java.net/2.2.0-b27/guice-bridge.html . Informationen zur Spring Bridge finden Sie hier: https://hk2.Java.net/2.2.0-b27/spring-bridge.html .

Die Entscheidung, welchen DI-Anbieter Sie verwenden, hängt stark von den speziellen Funktionen ab, die Ihre Anwendung benötigt.

0
jwells131313