Je cherche juste à écrire une annotation qui peut exécuter au moment de l'exécution, avant ou immédiatement après qu'une méthode de service soit invoquée. P>
Je ne sais pas s'ils sont exécutés au moment de l'exécution ou à la compilation. P>
7 Réponses :
Annotations Ne pas exécuter; Ce sont des notes ou des marqueurs qui sont lus par différents outils. Certains sont lus par votre compilateur, comme Vous pensez peut-être penser à assertions < / em> à la place, qui peut être utilisé pour valider les conditions préalables et postales. P> @override code>; D'autres sont intégrés dans les fichiers de classe et lus par des outils tels que Hibernate au moment de l'exécution. Mais ils ne font rien eux-mêmes. P>
Les lecteurs doivent savoir que les affirmations peuvent être (et sont par défaut) désactivées au moment de l'exécution. Ne mettez pas de comportement critique de l'application dans les affirmations.
Annotations n'a pas d'effet sur votre code, ils sont ici pour fournir des informations à évaluer par le compilateur ou d'autres outils. P>
Les annotations ont un certain nombre d'utilisations, parmi lesquelles: p>
Les informations pour le compilateur - Annotations peuvent être utilisées par le compilateur pour détecter des erreurs ou supprimer des avertissements. P>
Traitement du temps de compilateur et de déploiement - Les outils logiciels peuvent traiter l'annotation informations pour générer du code, des fichiers XML, etc. p>
Traitement d'exécution - Certaines annotations sont disponibles pour être examinées au moment de l'exécution. P> blockQuote>
Voir ce page . P>
Ils peuvent réellement être lus dans les deux environnements, en fonction de la stratégie de rétention que vous avez définie. p>
En réalité, lorsque vous définissez une annotation, vous devez spécifier le paramètre @rettion code>, qui définit si l'annotation est disponible dans le code source (source), dans les fichiers de classe (classe) ou Au moment de l'exécution (runtime).
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {}
Les annotations ne sont que des marqueurs. Ils ne sont pas exécutés et font quoi que ce soit. p>
Vous pouvez spécifier différentes stratégies de rétention: p>
Plus ici: http://www.java2s.com/taturial/java /0020__Language/specifiantAttentionPolicy.htm p>
Les annotations ne sont que des marqueurs au code source. Ils seront utilisés par des outils tels que des processeurs IDE, COMPILER ou ANNOTATION. P> LI>
Vous pouvez définir avec @rettion si une annotation doit être évaluée dans la source, la classe ou l'exécution. p> li>
Si vous souhaitez définir vos annotations possédées et que vous seul avez la connaissance de l'annotation à faire, vous devez également écrire un processeur d'annotation. (Mais ce n'est pas simple - peut-être) p> li> ol>
Cela dépend de la politique de rétention attachée avec cette annotation. P>
Une politique de rétention détermine à quelle annotation de points devrait être
mis au rebut. Java a défini 3 types de politiques de conservation à travers
Annotation avec la stratégie de rétention Annotation avec la stratégie de rétention Annotation avec la stratégie de rétention La politique de rétention sera spécifiée à l'aide de Java intégré
Annotation Java.Lang.Annotation.RetantPolicy Code> Enumération. Il a
source code>,
classe code> et
exécution code>. P>
Source code> sera conservée uniquement avec
code source et jeté pendant la compilation. P>
li>
Classe Code> sera conservée jusqu'à
compiler le code et rejeté pendant l'exécution. P>
li>
Runtime code> sera disponible pour le
JVM à travers l'exécution. P>
li>
ul>
@ReTENTION code>, et nous devons adopter la politique de rétention
taper. Le type de stratégie de conservation par défaut est
classe code>. P>