Maison Java javaDidacticiel Comment implémenter des métadonnées personnalisées via des annotations Java ?

Comment implémenter des métadonnées personnalisées via des annotations Java ?

Aug 03, 2023 am 08:11 AM
元数据 java注解 自定义元数据

Comment implémenter des métadonnées personnalisées via des annotations Java ?

Introduction : 
Au cours du processus de développement Java, nous devons souvent ajouter des informations supplémentaires à des éléments tels que des classes, des méthodes, des attributs, etc. pour le traitement au moment de l'exécution. Le mécanisme d'annotation de Java nous offre un moyen flexible d'implémenter des métadonnées personnalisées, facilitant ainsi l'ajout et l'utilisation d'informations supplémentaires pendant le processus de codage. Cet article présentera comment implémenter des métadonnées personnalisées via le mécanisme d'annotation de Java et donnera des exemples de code correspondants.

1. Le concept de base des annotations
Les annotations sont un mécanisme de métadonnées introduit dans Java 5. Il nous permet d'ajouter des informations supplémentaires aux éléments du programme (classes, méthodes, propriétés, etc.) au moment de la compilation et de l'exécution. Les annotations commencent par le symbole @ et sont placées avant la déclaration de l'élément de programme. @符号开头,放置于程序元素的声明之前。

二、自定义注解的语法
我们可以通过使用Java提供的元注解(Meta Annotation)和注解标记(Annotation Type)来定义自己的注解。元注解用于注解一个注解标记,而注解标记则用于注解具体的程序元素。下面是自定义注解的语法示例:

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE) // 可以指定注解可以应用到的程序元素类型
public @interface MyAnnotation {
    // 定义注解的成员变量
    String value() default "";
    int version() default 1;
}
Copier après la connexion

通过@Retention注解指定了注解的保留策略,@Target注解指定了注解可以应用的程序元素类型。其中,保留策略有三种:RetentionPolicy.SOURCERetentionPolicy.CLASSRetentionPolicy.RUNTIME,分别表示注解只在源代码中可见、在编译时可见以及在运行时反射可见。

三、使用注解
使用自定义的注解很简单,只需要在需要添加额外信息的程序元素前加上注解即可。下面是一个使用自定义注解的示例:

@MyAnnotation(value = "DemoClass", version = 2)
public class DemoClass {
    @MyAnnotation("DemoMethod")
    public void print() {
        System.out.println("Hello, Annotation");
    }
}
Copier après la connexion

我们将@MyAnnotation注解应用到了类DemoClass和方法print()上,同时,为注解的成员变量赋了默认值。在实际运行时,我们可以通过Java的反射机制来获取注解的值。下面是一个获取注解值的示例:

public class Main {
    public static void main(String[] args) {
        Class<DemoClass> cls = DemoClass.class;
        MyAnnotation annotation = cls.getAnnotation(MyAnnotation.class);
        System.out.println("类名:" + annotation.value()); // 输出:类名:DemoClass
        System.out.println("版本号:" + annotation.version()); // 输出:版本号:2

        Method[] methods = cls.getDeclaredMethods();
        for (Method method : methods) {
            MyAnnotation methodAnnotation = method.getAnnotation(MyAnnotation.class);
            if (methodAnnotation != null) {
                System.out.println("方法名:" + method.getName()); // 输出:方法名:print
                System.out.println("注解值:" + methodAnnotation.value()); // 输出:注解值:DemoMethod
            }
        }
    }
}
Copier après la connexion

通过上述代码,我们可以获取到注解应用在DemoClass类和print()方法上的信息,即类名、版本号、方法名以及注解的值。

四、实际应用场景
注解可应用于各种场景,下面以一个日志框架为例,演示如何使用注解来简化日志记录代码:

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Log {
    String value() default "";
}

public class LogUtils {
    public static void log(String message) {
        System.out.println("[Log] " + message);
    }
}

public class DemoClass {
    @Log("print方法被调用")
    public void print() {
        LogUtils.log("Hello, Annotation");
    }
}

public class LogAspect {
    public static Object logMethodInvocation(JoinPoint joinPoint) throws Throwable {
        MethodSignature signature = (MethodSignature) joinPoint.getSignature();
        Method method = signature.getMethod();
        Log logAnnotation = method.getAnnotation(Log.class);
        if (logAnnotation != null) {
            String message = logAnnotation.value();
            LogUtils.log("记录日志:" + message);
        }
        return joinPoint.proceed();
    }
}

@Configuration
@EnableAspectJAutoProxy
public class AppConfig {

    @Bean
    public DemoClass demoClass() {
        return new DemoClass();
    }

    @Bean
    public LogAspect logAspect() {
        return new LogAspect();
    }
}

public class Main {
    public static void main(String[] args) {
        AnnotationConfigApplicationContext context =
                new AnnotationConfigApplicationContext(AppConfig.class);
        DemoClass demoClass = context.getBean(DemoClass.class);
        demoClass.print();
        context.close();
    }
}
Copier après la connexion

在上述代码中,我们定义了一个@Log注解用于记录日志,同时在DemoClass类的print()方法上应用了该注解。使用LogAspect切面来捕捉并处理具有@Log注解的方法调用,记录相关日志信息。通过@Configuration@EnableAspectJAutoProxy注解启用AOP切面功能。在Main类中,我们使用注解配置Spring容器,并调用demoClass.print()

2. Syntaxe d'annotation personnalisée

Nous pouvons définir nos propres annotations en utilisant la méta-annotation (Meta Annotation) et la balise d'annotation (Annotation Type) fournies par Java. Les méta-annotations sont utilisées pour annoter une balise d'annotation, et les balises d'annotation sont utilisées pour annoter des éléments de programme spécifiques. Voici un exemple de syntaxe d'annotation personnalisée :
rrreee

La politique de rétention de l'annotation est spécifiée via l'annotation @Retention, et l'annotation @Target spécifie les types des éléments de programme auxquels l’annotation peut être appliquée. Parmi elles, il existe trois politiques de rétention : RetentionPolicy.SOURCE, RetentionPolicy.CLASS et RetentionPolicy.RUNTIME, qui indiquent respectivement que les annotations ne sont visibles que dans le code source. Visible au moment de la compilation et par réflexion au moment de l'exécution. 🎜🎜3. Utiliser des annotations🎜L'utilisation d'annotations personnalisées est très simple. Il vous suffit d'ajouter des annotations avant les éléments du programme qui doivent ajouter des informations supplémentaires. Voici un exemple d'utilisation d'annotations personnalisées : 🎜rrreee🎜Nous appliquons l'annotation @MyAnnotation à la classe DemoClass et à la méthode print() , Dans le même temps, des valeurs par défaut sont attribuées aux variables membres annotées. Au moment de l'exécution réelle, nous pouvons obtenir la valeur de l'annotation grâce au mécanisme de réflexion de Java. Voici un exemple d'obtention de la valeur d'annotation : 🎜rrreee🎜Grâce au code ci-dessus, nous pouvons obtenir les informations sur l'annotation appliquée à la classe DemoClass et au print() méthode, c'est-à-dire le nom de la classe, le numéro de version, le nom de la méthode et la valeur de l'annotation. 🎜🎜4. Scénarios d'application pratiques🎜Les annotations peuvent être appliquées à divers scénarios. Ce qui suit prend un cadre de journalisation comme exemple pour montrer comment utiliser les annotations pour simplifier le code de journalisation : 🎜rrreee🎜Dans le code ci-dessus, nous définissons un . @ L'annotation Log est utilisée pour enregistrer les logs, et cette annotation est appliquée à la méthode print() de la classe DemoClass. Utilisez l'aspect LogAspect pour capturer et traiter les appels de méthode avec des annotations @Log et enregistrer les informations de journal pertinentes. Activez la fonctionnalité d'aspect AOP via les annotations @Configuration et @EnableAspectJAutoProxy. Dans la classe Main, nous utilisons des annotations pour configurer le conteneur Spring et appelons la méthode demoClass.print() pour les tests, et enfin le journal est enregistré. 🎜🎜Conclusion : 🎜Grâce au mécanisme d'annotation de Java, nous pouvons implémenter des métadonnées personnalisées de manière très flexible. Les annotations peuvent être appliquées à divers scénarios, notamment la journalisation, la vérification des données, le contrôle des transactions, etc. Grâce à l'utilisation flexible des annotations, nous pouvons améliorer la lisibilité et l'évolutivité du code et réduire le code redondant. J'espère que cet article vous aidera à comprendre comment utiliser les annotations Java pour implémenter des métadonnées personnalisées. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Récupération de métadonnées à l'aide de l'API du New York Times Récupération de métadonnées à l'aide de l'API du New York Times Sep 02, 2023 pm 10:13 PM

Introduction La semaine dernière, j'ai écrit une introduction sur le scraping de pages Web pour collecter des métadonnées, et j'ai mentionné qu'il était impossible de scraper le site Web du New York Times. Le paywall du New York Times bloque vos tentatives de collecte de métadonnées de base. Mais il existe un moyen de résoudre ce problème en utilisant l'API du New York Times. Récemment, j'ai commencé à créer un site Web communautaire sur la plateforme Yii, que je publierai dans un prochain tutoriel. Je souhaite pouvoir ajouter facilement des liens pertinents par rapport au contenu du site. Même si les utilisateurs peuvent facilement coller des URL dans des formulaires, fournir des informations sur le titre et la source prend du temps. Ainsi, dans le didacticiel d'aujourd'hui, je vais étendre le code de scraping que j'ai récemment écrit pour tirer parti de l'API du New York Times afin de collecter les titres lors de l'ajout d'un lien vers le New York Times. Rappelez-vous, je suis impliqué

Accédez aux métadonnées de divers fichiers audio et vidéo à l'aide de Python Accédez aux métadonnées de divers fichiers audio et vidéo à l'aide de Python Sep 05, 2023 am 11:41 AM

Nous pouvons accéder aux métadonnées des fichiers audio en utilisant Mutagen et le module eyeD3 en Python. Pour les métadonnées vidéo, nous pouvons utiliser des films et la bibliothèque OpenCV en Python. Les métadonnées sont des données qui fournissent des informations sur d'autres données, telles que des données audio et vidéo. Les métadonnées des fichiers audio et vidéo incluent le format de fichier, la résolution du fichier, la taille du fichier, la durée, le débit binaire, etc. En accédant à ces métadonnées, nous pouvons gérer les médias plus efficacement et analyser les métadonnées pour obtenir des informations utiles. Dans cet article, nous examinerons certaines des bibliothèques ou modules fournis par Python pour accéder aux métadonnées des fichiers audio et vidéo. Accéder aux métadonnées audio Certaines bibliothèques permettant d'accéder aux métadonnées des fichiers audio utilisent la mutagenèse

Microsoft lance un nouveau langage de définition de modèle tabulaire pour Power BI Microsoft lance un nouveau langage de définition de modèle tabulaire pour Power BI Apr 13, 2023 pm 04:13 PM

Microsoft a annoncé la date de fin de support de Power BI Desktop sur Windows 8.1. Récemment, la première plate-forme d’analyse de données du géant de la technologie a également introduit la prise en charge de TypeScript et d’autres nouvelles fonctionnalités. Aujourd'hui, un nouveau langage de définition de modèle tabulaire (TMDL) pour Power BI a été lancé et est désormais disponible en préversion publique. TMDL est requis en raison des fichiers BIM très complexes extraits de l'énorme modèle de données sémantiques créé à l'aide de Power BI. Contenant traditionnellement des métadonnées de modèle en Tabular Model Scripting Language (TMSL), ce fichier est considéré comme difficile à traiter davantage. De plus, avec plusieurs développeurs travaillant sur

Comment utiliser les fonctions d'annotation pour implémenter des annotations personnalisées en Java Comment utiliser les fonctions d'annotation pour implémenter des annotations personnalisées en Java Oct 24, 2023 am 10:32 AM

Comment utiliser les fonctions d'annotation en Java pour implémenter des annotations personnalisées L'annotation (Annotation) est un élément de syntaxe spécial en Java qui peut être utilisé pour ajouter des informations de métadonnées au code pour l'analyse et le traitement au moment de l'exécution. Java fournit des annotations prédéfinies (telles que @Override, @Deprecated, etc.) et prend également en charge les annotations définies par l'utilisateur. Dans certains scénarios, l'utilisation d'annotations personnalisées peut rendre le code plus concis et plus lisible. Cet article explique comment utiliser

Comment résoudre : Erreur d'annotation Java : le type de paramètre d'annotation est incorrect Comment résoudre : Erreur d'annotation Java : le type de paramètre d'annotation est incorrect Aug 18, 2023 am 11:12 AM

Comment résoudre : Erreur d'annotation Java : type de paramètre d'annotation incorrect Introduction : Dans le développement Java, l'annotation (Annotation) est une forme de métadonnées utilisée pour ajouter des informations supplémentaires aux éléments du programme (classes, méthodes, champs, etc.). Cependant, nous pouvons parfois rencontrer des problèmes liés au mauvais type de paramètres d'annotation, ce qui peut entraîner des erreurs de compilation ou des exceptions d'exécution. Cet article expliquera comment résoudre les erreurs de type de paramètre d'annotation Java et fournira des exemples de code pour aider les lecteurs à mieux comprendre. Comprendre l'erreur de type de paramètre d'annotation : erreur de type de paramètre d'annotation

Comment ajouter des métadonnées à un DataFrame ou une série à l'aide de Pandas en Python ? Comment ajouter des métadonnées à un DataFrame ou une série à l'aide de Pandas en Python ? Aug 19, 2023 pm 08:33 PM

Une fonctionnalité clé de Pandas est la capacité de gérer des métadonnées qui peuvent fournir des informations supplémentaires sur les données présentes dans un DataFrame ou une série. Pandas est une bibliothèque puissante et largement utilisée en Python pour la manipulation et l'analyse de données. Dans cet article, nous explorerons comment ajouter des métadonnées à un DataFrame ou une série en Python à l'aide de Pandas. Que sont les métadonnées dans Pandas ? Les métadonnées sont des informations sur les données d'un DataFrame ou d'une série. Il peut inclure le type de données sur la colonne, l'unité de mesure ou toute autre information importante et pertinente pour fournir un contexte sur les données fournies. Vous pouvez utiliser Pandas pour

Extraire les métadonnées d'une page Web à l'aide de Python et de l'extension WebDriver Extraire les métadonnées d'une page Web à l'aide de Python et de l'extension WebDriver Jul 07, 2023 am 11:42 AM

Extraction des métadonnées de pages Web à l'aide des extensions Python et WebDriver Avec le développement rapide d'Internet, nous sommes exposés chaque jour à une grande quantité de contenu Web. Dans ce contenu, les métadonnées des pages Web jouent un rôle très important. Les métadonnées d'une page Web contiennent des informations sur une page Web, telles que le titre, la description, les mots-clés, etc. L'extraction de métadonnées de pages Web peut nous aider à mieux comprendre le contenu et les caractéristiques des pages Web. Cet article explique comment utiliser l'extension Python et WebDriver pour extraire les métadonnées de pages Web. Installer l'extension WebDriver

Comment extraire des métadonnées de fichiers PDF texte avec Python pour le NLP ? Comment extraire des métadonnées de fichiers PDF texte avec Python pour le NLP ? Sep 28, 2023 pm 06:45 PM

Comment extraire des métadonnées de fichiers PDF texte avec PythonforNLP ? Avec l’avènement de l’ère du Big Data, le traitement de l’information est devenu de plus en plus important. Dans le traitement du langage naturel (NLP), l’extraction de métadonnées à partir de données textuelles est une tâche critique. Cet article expliquera comment utiliser la technologie PythonforNLP pour extraire les métadonnées des fichiers PDF et fournira des exemples de code spécifiques. Python est un langage de programmation populaire, concis, facile à lire et puissant. Python a de nombreux puissants

See all articles