2017-10-29 1 views

Antwort

0

Technisch gesehen hält Sie nichts davon ab. Sie können diese (gut, so ziemlich jede andere) Annotation in jeder beliebigen Klasse verwenden. Natürlich, wenn die Annotation auf diesen Typ von Java-Element angewendet werden kann (Methode, Feld, Klasse). Die Anmerkungen selbst bringen keine Logik oder Magie in Ihren Code. Überprüfen Sie the source selbst: Sie werden sehen, dass die meisten von ihnen nichts als Dateninhaber sind.

Anmerkungen sind nichts ohne Prozessoren. Die Verarbeitung kann unter Kompilierzeit oder in einer Laufzeit erfolgen.

Kompilierzeit Annotationsverarbeitung kann den Quellcode ändern (vereinfacht hier die Dinge), bevor es kompiliert wird. Es kann zusätzliches Verhalten einführen (wie Nullprüfungen) oder Methoden generieren (wie Lombok's @Getter/@Setter. Kompilierzeit Annotation werden normalerweise nach der Verarbeitung entfernt, sie sind nicht auf einer Laufzeit vorhanden.

Die Anmerkungen, die Sie über verschiedene Art sind - Laufzeitannotationen Offensichtlich können Ressourceninjektions- oder Rollenüberprüfungen nicht zur Kompilierungszeit durchgeführt werden.So benötigen sie einen Prozessor, der ebenfalls wirksam sein muss, aber dieser Prozessormuss in einem Klassenpfad einer laufenden Anwendung vorhanden sein.In der Regel werden solche Prozessoren bereitgestellt von einer Umgebung Sie laufen Ihre Anwendung in. In Ihrem Fall sind diese Java EE-Annotation und sie erfordern Java EE kompatibel Anwendungsserver zu arbeiten. Dh die Magie wird nur passieren, wenn Sie Ihre Klasse in einem konfigurierten Anwendungsserver ausführen, wie Glassfish oder WebSpere. Wenn Sie Ihre Anwendung in Tomcat oder Jetty ausführen (sie sind Webserver) - die Annotation wird nicht funktionieren, sie werden "weggelassen", weil keine Prozessoren vorhanden sind, um sie zu verarbeiten.

+0

Vielen Dank für die Erklärung über Anmerkungen in Kürze – manoj

Verwandte Themen