Anmerkungen haben ihre Verwendung, aber sie sind nicht die einzige Silberkugel, die die XML-Konfiguration beendet. Ich empfehle die beiden zu mischen!
Wenn Sie beispielsweise Spring verwenden, ist es völlig intuitiv, XML für den Teil der Abhängigkeitsinjektion Ihrer Anwendung zu verwenden. Dadurch werden die Abhängigkeiten des Codes von dem Code entfernt, der ihn verwendet. Im Gegensatz dazu macht eine Verwendung einer Anmerkung im Code, der die Abhängigkeiten benötigt, den Code auf diese automatische Konfiguration aufmerksam.
Anstatt XML für die Transaktionsverwaltung zu verwenden, ist es jedoch durchaus sinnvoll, eine Methode als transaktional mit einer Anmerkung zu markieren, da dies Informationen sind, die ein Programmierer wahrscheinlich wissen möchte. Dass eine Schnittstelle als SubtypeY anstelle eines SubtypeX eingefügt wird, sollte jedoch nicht in die Klasse aufgenommen werden. Wenn Sie jetzt SubtypeX einfügen möchten, müssen Sie Ihren Code ändern, während Sie zuvor einen Schnittstellenvertrag hatten Mit XML müssten Sie nur die XML-Zuordnungen ändern, und dies ist ziemlich schnell und problemlos.
Ich habe keine JPA-Annotationen verwendet, daher weiß ich nicht, wie gut sie sind, aber ich würde argumentieren, dass es auch gut ist, die Zuordnung von Beans zur Datenbank in XML zu belassen, da es dem Objekt egal sein sollte, woher seine Informationen stammen Es sollte sich nur darum kümmern, was es mit seinen Informationen anfangen kann. Aber wenn Sie JPA mögen (ich habe keine Erfahrung damit), machen Sie es auf jeden Fall.
Im Allgemeinen: Wenn eine Annotation Funktionen bietet und an und für sich als Kommentar fungiert und den Code nicht an einen bestimmten Prozess gebunden ist, um ohne diese Annotation normal zu funktionieren, wählen Sie Annotationen. Beispielsweise tötet eine als transaktional gekennzeichnete Transaktionsmethode ihre Betriebslogik nicht und dient auch als guter Kommentar auf Codeebene. Andernfalls werden diese Informationen wahrscheinlich am besten als XML ausgedrückt, da sie zwar letztendlich die Funktionsweise des Codes beeinflussen, jedoch die Hauptfunktionalität des Codes nicht ändern und daher nicht in die Quelldateien gehören.
@Component
und@Autowired
, dann ist dies eine falsche Zweiteilung. Es gibt andere Möglichkeiten, Ihre Konfiguration zu erstellen, einschließlich JavaConfig und groovy config.