Best practices bei der Verwendung von Spring 3 Anmerkungen
Ich bin auf der Suche für Sie einige best practices bei der Verwendung von Spring 3 Anmerkungen.
Ich bin derzeit wieder auf den Frühling 3-und von dem, was ich bisher gelesen habe, sehe ich eine Menge von Akzent gelegt auf die Verwendung von Annotationen und sich von der XML-Konfiguration.
Eigentlich das, was empfohlen wird, ist eine Mischung aus beiden Stilen, mit Anmerkungen, die Dinge, die nicht Häufig ändern oder aus einem Lauf zum nächsten (z.B. ein @Controller
wird bleiben wie das für die Lebensdauer der Anwendung), während die Dinge, die sich verändern und müssen konfigurierbar sein gehen in XML (z.B. E-mail smtp-Adresse, Endgeräte für web-services, dass Ihre Anwendung spricht etc).
Meine Frage ist, was gehen sollte, in Anmerkungen und in welchem Umfang?
Unter dem Punkt Anmerkungen machen Dinge schwieriger statt einfacher? Ist die Technik (Feder 3) vollständig angenommen wird als in der Lage sein, um solche Aussagen machen oder dauert es einige mehr Zeit für die Menschen, um Erfahrung zu sammeln und dann wider auf das Problem?
- "eine E-mail-smtp-Adresse, Endgeräte für web-services, dass Ihre Anwendung spricht etc." - diese alle müssen, gehen Sie in die Eigenschaften der Datei geladen und in die Anwendungs-Kontext durch eine Feder PropertyPlaceholderConfigurator
- Normalerweise ja! Ich dachte nur etwas dynamischer, etwas rein konfigurierbar. Vielleicht ist das Beispiel war nicht das beste.
- ein gutes Beispiel der Verwendung von xml ist, wie bei der Konfiguration der EntityManager Oder SpringSecurity-Konfiguration, wo Sie nicht brauchen/haben, Klassen zu kommentieren.
- Eine, die ich gelernt von: carinae.net/2009/11/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist es immer schwierig zu bekommen echte weiterführende Informationen zu erhalten.
Die einfache Anleitung mit der "schau auf meinen blog kopiert habe ich die hello word tutorial von Spring Source Homepage... Jetzt können Sie ausgefallene Anmerkungen überall, es ist die Lösung all unserer Probleme, einschließlich Krebs und Hunger." ist nicht wirklich nützlich.
Wenn Sie daran denken, richtige Feder Kern hatte mehrere Zwecke, darunter:
Implementierung/Konfiguration von
bean jederzeit
der richtige Ort, um Ihre Konfiguration
Anotation scheitern für all diese Bedürfnisse:
(man kann die standard-anotation nur
aber sobald Sie mindestens eine
Frühjahr anotation ist dies nicht mehr
true)
neu kompilieren zu ändern bean
Implementierung oder Konfiguration
code. Es kann schwierig sein zu finden
was bean wird wirklich benutzt, nur von
Lesen Sie den code oder XML-Konfiguration
Datei.
In der Tat haben wir unseren Fokus verschoben:
mehrere Implementierungen von
unsere Dienste.
eine API ist nicht so schlimm.
für echte Abhängigkeit Injektion
mehr, aber vor allem zur Steigerung
die Produktivität und reduzieren die java-code
Ausführlichkeit.
Also ich würde anotations, wenn es Sinn. Wenn es purerly zu entfernen boilerplate-code, Ausführlichkeit. Ich würde aufpassen mit der XML-Konfiguration-Datei für die Sache, die Sie wollen konfigurierbar, auch wenn es sich nur um eine stub-Implementierung der service in unit-tests.
Benutze ich
@Value
für Eigenschaften, die konfiguriert sind, externe properties-Datei überPropertyPlaceholderConfigurer
, als kunal hingewiesen.Gibt es keine strikte Linie, Wann man xml verwenden, aber ich benutze xml:
In Antwort auf Ihren Kommentar: der Frühling ist sehr weit verbreitet, aber "gut" und "schlecht" sind sehr subjektiv. Sogar meine Linien sind nicht Universelle Wahrheiten. XML, Annotationen und programmatische Konfiguration werden alle vorhanden ist, für einen Zweck, und jeder Entwickler /Unternehmen haben Ihre Vorlieben.
Wie gesagt - es gibt keine strikte Linie, und keine Universelle guter Praxis für die Anmerkungen.
Anmerkungen sind sicherlich in der Möglichkeit, durch die "neuere" Programmierung in java weiter. Ich verwende Anmerkungen für verschiedene Verwendungsmöglichkeiten...wie
@Scope
für scope der bean,@Required
für die Herstellung der Abhängigkeit erforderlich,@Aspect
für die Konfiguration Hinweise,@Autowired
für die constructor-injection mit Annotationen. Seit spring 2.5, annotation-support war gut.Hier finden Sie spring tutorial, wo auf Basis einer annotation Problem sind abgedeckt hier.
Ich denke, dass die zwei Fälle, dass die Verwendung von annotations könnte einige Probleme verursachen. Erstens, wenn Sie schreiben wollen, komplexe benannte Abfragen (JPA) in Ihre Entitäten. Ich sah einige entity-code-Beispiele und ich fragte mich, ob der code wirklich java-code oder nicht. Zu viele Metadaten im Programm-code wird die Lesbarkeit von es, der tötet, clean code Prinzipien.
Zweite problem ist die Portierbarkeit zwischen JVM-Versionen. Annotation ist ein feature von 1,5+. Wenn Ihre software unterstützen sollte, die frühere JVM-Versionen, dann können Sie nicht verwenden Sie diese.
Sowieso, können Sie mit Anmerkungen jedesmal, wenn ohne jeden Zweifel und schonen Sie Ihre Zeit nicht ändern IDE-Registerkarten, um zu überprüfen XML-Dateien, wenn die Eigenschaft noch da ist oder nicht, oder korrekt eingegeben etc.
Für sehr kleine Projekte, könntest du noch die XML-version, wenn Sie nicht zu viele Sachen erklärt zu werden im Frühjahr. Aber, wenn Sie sind in einem großen Projekt, das die Dinge sein könnten, sehr lästig, wenn Sie hatte 10 xml-configs.
Es wird vielleicht nicht viel helfen aber bei der Arbeit, die Sie nicht verwenden möchten autowiring-da braucht es einen classpath-scan (aber das kann sein Paket definierten glaube ich). So erhöht er die Startzeit der Anwendung wurde entsprechend der Größe des Projekts.