Vor zwei Jahren habe ich in einem Blog über Anmerkungen geschrieben und dass ich sie für eine schlechte Sache halte. Es scheint, als müsste ich meine Worte essen. In @OneToMany(mappedBy = "changePlan", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@org.hibernate.annotations.Cascade(value = org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
@org.hibernate.annotations.Sort(type = org.hibernate.annotations.SortType.COMPARATOR,
comparator = PositionableComparator.class)
private SortedSet steps = new TreeSet(new PositionableComparator());
Wir verwenden JUnit 4 und Spring 2.0-Annotationen für unsere Testklassen:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "/spring/ad-core-context-common.xml",
"/spring/ad-core-context-test.xml", "/spring/ad-cli-context-test.xml" })
@TransactionConfiguration(defaultRollback = true)
@TestExecutionListeners(value = { TransactionalTestExecutionListener.class,
DependencyInjectionTestExecutionListener.class })
public class AutomatedDeploymentServicesComponentTest {
...
Und wir haben sogar eine eigene Annotation eingeführt, um die Felder in unserer Datenbank zu beschreiben:
@ConfigurationItemProperty(required = true,
description = "Name of the WebSphere Application Server. Valid examples; MyServer, Server01")
private String name;
Es stellt sich heraus, dass Annotationen zwar Ihren Code unübersichtlich machen und Ihren Code an bestimmte Frameworks usw. binden können, dass sie aber auch einige nützliche Eigenschaften haben:
- Anmerkungen ersparen Ihnen das Schreiben von (weiteren) XML-Metadaten, wie z. B. Hibernate-Mapping-Dateien und Spring-Kontextdateien.
- Mit Hilfe von Anmerkungen können Personen, die den Code lesen, die Metadaten sofort sehen, ohne sie in anderen Dateien suchen zu müssen.
- Anmerkungen werden automatisch verschoben, wenn Sie Code refaktorisieren.
- Anmerkungen werden automatisch entfernt, wenn Sie den Code entfernen.
- Wenn Sie eine Klasse oder ein Feld umbenennen, müssen Sie die externen Metadaten nicht ändern.
Kurz gesagt, Annotationen verringern den Abstand zwischen Ihrem Code und seinen Metadaten. Und das ist
- Dass Sie die Annotationsklassen benötigen, um Ihren Code zu kompilieren, scheint nicht so schlimm zu sein. Warum sollten Sie die von Ihnen verwendeten Frameworks nicht in Ihrem Klassenpfad haben?
- Die Syntax ist also nicht so toll? Sie ist nicht so schlecht wie XML. Und zumindest bietet Eclipse eine schöne Syntaxeinfärbung.
- Die meisten der in Anmerkungen gespeicherten Konfigurationsdaten sind ziemlich statisch, so dass eine Neukompilierung bei Änderungen nicht so schlimm ist. Wie oft ordnen Sie zum Beispiel Ihre Entitäten neu zu, ohne auch eine neue Version Ihrer Software zu veröffentlichen?
- Die Verwendung der gleichen Klassen mit mehreren Konfigurationen ist immer noch ein Problem. JPA verfügt beispielsweise auch über die Datei orm.xml, um die Entitätskonfiguration bereitzustellen/zu überschreiben. Aber das ist keine generische Lösung.
Die eigentliche Schlussfolgerung hier ist also, dass grobe Verallgemeinerungen Sie später in Verlegenheit bringen können. Wie immer: Es kommt darauf an.
Verfasst von
Vincent Partington
Unsere Ideen
Weitere Blogs
Contact



