जावा में एनोटेशन का उपयोग कैसे और कहाँ किया जाता है?


218

प्रमुख क्षेत्र कौन से हैं जिनका हम एनोटेशन का उपयोग कर सकते हैं? क्या सुविधा XML आधारित कॉन्फ़िगरेशन के लिए एक प्रतिस्थापन है?


2
सीडीबी, मुझे यकीन नहीं है कि आप पूरी तरह से बाउंसियों का विचार प्राप्त करते हैं - आपके पास यहां बहुत अच्छे उत्तरों का एक गुच्छा है, और किसी भी स्पष्टीकरण के बिना कि उनमें से क्या गायब है या आप विशेष रूप से क्या देख रहे हैं, आपने एक इनाम जोड़ा। (आपने यह भी यहां किया: stackoverflow.com/questions/1746550/… )
delfuego

5
ठीक है, मुझे पता है कि यह सुपर-पुराना है, लेकिन @delfuego: यदि आप उस ओपी को बताने जा रहे हैं जो वह गलत तरीके से इस्तेमाल कर रहा है, तो हो सकता है कि यह भी बताएं कि उनका सही तरीके से उपयोग कैसे करें
पोप

जवाबों:


308

एनोटेशन मेटा-मेटा-ऑब्जेक्ट्स हैं जिनका उपयोग अन्य मेटा-ऑब्जेक्ट्स का वर्णन करने के लिए किया जा सकता है । मेटा-ऑब्जेक्ट्स वर्ग, फ़ील्ड और विधियाँ हैं। किसी वस्तु को उसके मेटा-ऑब्जेक्ट (जैसे anObj.getClass()) के लिए पूछना आत्मनिरीक्षण कहलाता है । आत्मनिरीक्षण आगे बढ़ सकता है और हम मेटा-ऑब्जेक्ट से पूछ सकते हैं कि इसके एनोटेशन (जैसे aClass.getAnnotations) क्या हैं । आत्मनिरीक्षण और एनोटेशन प्रतिबिंब और मेटा-प्रोग्रामिंग कहा जाता है

एक एनोटेशन को एक तरीके से व्याख्या करने की आवश्यकता है या किसी अन्य को उपयोगी होने के लिए। सूचनाओं को आईडीई या कंपाइलर द्वारा विकास-समय पर या एक ढांचे द्वारा रन-टाइम पर व्याख्या की जा सकती है ।

एनोटेशन प्रोसेसिंग एक बहुत शक्तिशाली तंत्र है और इसे बहुत सारे तरीकों से इस्तेमाल किया जा सकता है:

  • किसी तत्व की बाधाओं या उपयोग का वर्णन करने के लिए: जैसे @Deprecated, @Override, या@NotNull
  • एक तत्व के "प्रकृति" का वर्णन करने के लिए, उदाहरण के लिए @Entity, @TestCase, @WebService
  • एक तत्व के व्यवहार का वर्णन करने के लिए: @Statefull, @Transaction
  • तत्व को संसाधित करने का तरीका बताने के लिए: @Column, @XmlElement

सभी मामलों में, तत्व का वर्णन करने और इसके अर्थ को स्पष्ट करने के लिए एक एनोटेशन का उपयोग किया जाता है

JDK5 से पहले, जानकारी जो अब एनोटेशन के साथ व्यक्त की जाती है, उसे कहीं और संग्रहीत करने की आवश्यकता होती है, और XML फ़ाइलों का अक्सर उपयोग किया जाता था। लेकिन एनोटेशन का उपयोग करना अधिक सुविधाजनक है क्योंकि वे स्वयं जावा कोड से संबंधित होंगे, और इसलिए XML की तुलना में हेरफेर करना बहुत आसान है।

एनोटेशन का उपयोग:

  • प्रलेखन, जैसे XDoclet
  • संकलन
  • आईडीई
  • टेस्टिंग फ्रेमवर्क, जैसे JUnit
  • IoC कंटेनर जैसे कि स्प्रिंग
  • सीरियलाइजेशन, उदाहरण के लिए एक्सएमएल
  • पहलू-उन्मुख प्रोग्रामिंग (एओपी), जैसे स्प्रिंग एओपी
  • अनुप्रयोग सर्वर, जैसे EJB कंटेनर, वेब सेवा
  • ऑब्जेक्ट-रिलेशनल मैपिंग (ओआरएम), जैसे हाइबरनेट, जेपीए
  • और बहुत सारे...

... उदाहरण के लिए प्रोजेक्ट लोमबोक पर एक नज़र है , जो एनोटेशन का उपयोग यह परिभाषित करने के लिए करता है कि कैसे उत्पन्न equalsया hashCodeतरीके हैं।


50

जावा के एनोटेशन के लिए म्यूटेंट एप्लिकेशन हैं। सबसे पहले, वे संकलक (या संकलक एक्सटेंशन) द्वारा उपयोग किया जा सकता है। उदाहरण के लिए ओवरराइड पर विचार करें एनोटेशन :

class Foo {

    @Override public boolean equals(Object other) {
        return ...;
    }
}

यह वास्तव में जावा JDK में बनाया गया है। कंपाइलर एक त्रुटि का संकेत देगा, अगर कुछ विधि इसके साथ टैग की गई है, जो नहीं करता है बेस क्लास से विरासत में मिली विधि को ओवरराइड । यह एनोटेशन सामान्य गलती से बचने के लिए सहायक हो सकता है, जहाँ आप वास्तव में एक विधि को ओवरराइड करने का इरादा रखते हैं, लेकिन ऐसा करने में विफल रहते हैं, क्योंकि आपकी पद्धति में दिया गया हस्ताक्षर, ओवरराइड होने की विधि के हस्ताक्षर से मेल नहीं खाता है:

class Foo {

    @Override public boolean equals(Foo other) {  // Compiler signals an error for this one
        return ...;
    }
}

JDK7 के अनुसार, एनोटेशन की अनुमति किसी भी प्रकार पर दी जाती है। इस सुविधा का उपयोग अब संकलक एनोटेशन जैसे NotNull के लिए किया जा सकता है , जैसे:

public void processSomething(@NotNull String text) {
    ...
}

जो संकलक को चर के अनुचित / अनियंत्रित उपयोगों के बारे में आगाह करने की अनुमति देता है और अशक्त मानों के ।

एनोटेशन के लिए एक और अधिक उन्नत एप्लिकेशन में रन-टाइम में प्रतिबिंब और एनोटेशन प्रसंस्करण शामिल है। जब आप एनोटेशन के "XML आधारित कॉन्फ़िगरेशन के लिए प्रतिस्थापन" के रूप में बोलते हैं, तो मुझे लगता है कि आपके मन में क्या था। यह आवश्यक एनोटेशन प्रसंस्करण का उपयोग किया जाता है, उदाहरण के लिए, आवश्यक मेटा-डेटा और कॉन्फ़िगरेशन जानकारी प्रदान करने के लिए विभिन्न चौखटे और जेसीपी मानकों (दृढ़ता, निर्भरता इंजेक्शन, आप इसका नाम) द्वारा।


18

एनोटेशन जावा स्रोत फ़ाइल में जोड़े गए मेटाडेटा (डेटा के बारे में डेटा) का एक रूप है। क्लाइंट कोड के एकीकरण को सरल बनाने के लिए इनका उपयोग बड़े पैमाने पर चौखटे द्वारा किया जाता है। वास्तविक दुनिया का एक जोड़ा मेरे सिर के ऊपर से निकलता है:

  • JUnit 4 - आप @Testप्रत्येक परीक्षण विधि में एनोटेशन जोड़ते हैं जो आप चाहते हैं कि JUnit धावक चलाए। परीक्षण (जैसे @Beforeऔर @BeforeClass) की स्थापना के साथ करने के लिए अतिरिक्त एनोटेशन भी हैं । इन सभी को JUnit धावक द्वारा संसाधित किया जाता है, जो तदनुसार परीक्षण चलाता है। आप कह सकते हैं कि यह XML कॉन्फ़िगरेशन के लिए एक प्रतिस्थापन है, लेकिन एनोटेशन कभी-कभी अधिक शक्तिशाली होते हैं (वे प्रतिबिंब का उपयोग कर सकते हैं, उदाहरण के लिए) और साथ ही वे उस कोड के करीब हैं जिसका वे @Testपरीक्षण करने की विधि से पहले एनोटेशन सही हैं, इसलिए उद्देश्य की विधि स्पष्ट है - प्रलेखन के रूप में अच्छी तरह से कार्य करता है)। दूसरी ओर एक्सएमएल कॉन्फ़िगरेशन अधिक जटिल हो सकता है और एनोटेशन की तुलना में बहुत अधिक डेटा शामिल कर सकता है।

  • टेराकोटा - एनोटेशन और XML कॉन्फ़िगरेशन फ़ाइलों दोनों का उपयोग करता है। उदाहरण के लिए, @Rootएनोटेशन टेराकोटा रनटाइम को बताता है कि एनोटेट फ़ील्ड एक रूट है और इसकी मेमोरी को वीएम शेष के बीच साझा किया जाना चाहिए। एक्सएमएल कॉन्फ़िगरेशन फ़ाइल का उपयोग सर्वर को कॉन्फ़िगर करने और यह बताने के लिए किया जाता है कि कौन सी कक्षा में साधन है।

  • Google Guice - एक उदाहरण @Injectएनोटेशन होगा, जिसे जब एक कंस्ट्रक्टर पर लागू किया जाता है, तो परिभाषित इंजेक्टरों के आधार पर प्रत्येक पैरामीटर के मानों के लिए Guice रनटाइम दिखता है। @Injectएनोटेशन एक्सएमएल विन्यास फाइल का उपयोग कर को दोहराने के लिए काफी मुश्किल होगा, और निर्माता इसे करने के लिए संदर्भ देता से इसकी निकटता काफी उपयोगी है (सभी निर्भरता इंजेक्शन आप की स्थापना की है खोजने के लिए एक बहुत बड़ा एक्सएमएल फ़ाइल के लिए खोज करने के लिए होने की कल्पना)।

उम्मीद है कि मैंने आपको अलग-अलग रूपरेखाओं में एनोटेशन का उपयोग करने का एक स्वाद दिया है।


12

जावा में एनोटेशन, कक्षाओं, क्षेत्रों और विधियों का वर्णन करने के लिए एक साधन प्रदान करते हैं। अनिवार्य रूप से, वे जावा स्रोत फ़ाइल में जोड़े गए मेटाडेटा का एक रूप हैं, वे सीधे किसी कार्यक्रम के शब्दार्थ को प्रभावित नहीं कर सकते हैं। हालाँकि, एनोटेशन को रिफ्लेक्शन का उपयोग करके रन-टाइम पर पढ़ा जा सकता है और इस प्रक्रिया को आत्मनिरीक्षण के रूप में जाना जाता है। तब इसका उपयोग कक्षाओं, क्षेत्रों या विधियों को संशोधित करने के लिए किया जा सकता था।

यह सुविधा, अक्सर पुस्तकालयों और एसडीके (हाइबरनेट, ज्यूनीट, स्प्रिंग फ्रेमवर्क) द्वारा शोषण की जाती है, कोड की मात्रा को सरल या कम करने के लिए जो एक प्रोग्रामर तब तक इन पुस्तकालयों या एसडीके के साथ काम करने के लिए नहीं करेगा। इसके अलावा, इसे एनोटेशन कहना उचित है। परावर्तन कार्य जावा में हाथ से काम करता है।

हमें किसी एनोटेशन की उपलब्धता को या तो संकलन-समय या रनटाइम तक सीमित करना है। कस्टम एनोटेशन बनाने के लिए भी एक सरल उदाहरण है।

Driver.java

package io.hamzeen;

import java.lang.annotation.Annotation;

public class Driver {

    public static void main(String[] args) {
        Class<TestAlpha> obj = TestAlpha.class;
        if (obj.isAnnotationPresent(IssueInfo.class)) {

            Annotation annotation = obj.getAnnotation(IssueInfo.class);
            IssueInfo testerInfo = (IssueInfo) annotation;

            System.out.printf("%nType: %s", testerInfo.type());
            System.out.printf("%nReporter: %s", testerInfo.reporter());
            System.out.printf("%nCreated On: %s%n%n",
                    testerInfo.created());
        }
    }
}

TestAlpha.java

package io.hamzeen;

import io.hamzeen.IssueInfo;
import io.hamzeen.IssueInfo.Type;

@IssueInfo(type = Type.IMPROVEMENT, reporter = "Hamzeen. H.")
public class TestAlpha {

}

IssueInfo.java

package io.hamzeen;

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

/**
 * @author Hamzeen. H.
 * @created 10/01/2015
 * 
 * IssueInfo annotation definition
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface IssueInfo {

    public enum Type {
        BUG, IMPROVEMENT, FEATURE
    }

    Type type() default Type.BUG;

    String reporter() default "Vimesh";

    String created() default "10/01/2015";
}

6

क्या यह XML आधारित कॉन्फ़िगरेशन के लिए एक प्रतिस्थापन है?

पूरी तरह से नहीं है, लेकिन कोड संरचनाओं (जैसे कि जेपीए मैपिंग या स्प्रिंग में निर्भरता इंजेक्शन) के साथ निकटता से मेल खाता है, अक्सर इसे एनोटेशन से बदला जा सकता है, और फिर आमतौर पर बहुत कम क्रिया, कष्टप्रद और दर्दनाक होता है। बहुत ज्यादा सभी उल्लेखनीय रूपरेखाओं ने इस स्विच को बनाया है, हालांकि पुराने XML कॉन्फ़िगरेशन आमतौर पर एक विकल्प के रूप में रहता है।


माना जाता है कि एनोटेशन JSF के लिए फेस-कॉन्फिग XML फ़ाइल को पूरी तरह से समाप्त कर सकता है। इस पोस्ट के दौरान रैन ने यह पता लगाने की कोशिश की कि कैसे ...
ब्रायन नोब्लुक

6

एनोटेशन के 2 विचार हैं

  1. उपयोगकर्ता दृश्य, ज्यादातर समय, एनोटेशन एक शॉर्टकट की तरह काम करते हैं, आपको कुछ महत्वपूर्ण स्ट्रोक से बचाते हैं, या आपके प्रोग्राम को अधिक पठनीय बनाते हैं

  2. विक्रेता का विचार, एनोटेशन के प्रोसेसर का दृश्य हल्के भारित 'इंटरफ़ेस' से अधिक है, आपका प्रोग्राम SOMETHING के सामने आता है, लेकिन विशेष इंटरफ़ेस (यहां एनोटेशन एनका) को "स्पष्ट रूप से" लागू किए बिना।

जैसे jpa में आप कुछ इस तरह परिभाषित करते हैं

@Entity class Foo {...}

के बजाय

class Foo implements Entity {...}

दोनों एक ही बात बोलते हैं "फू एक इकाई वर्ग है"


3

जहाँ एनोटेशन का उपयोग किया जा सकता है

एनोटेशन को घोषणाओं पर लागू किया जा सकता है: वर्गों, फ़ील्ड्स, विधियों और अन्य प्रोग्राम तत्वों की घोषणाएँ। जब एक घोषणा पर उपयोग किया जाता है, तो प्रत्येक एनोटेशन अक्सर सम्मेलन द्वारा, अपनी लाइन पर दिखाई देता है।

जावा एसई 8 अपडेट: एनोटेशन भी प्रकारों के उपयोग के लिए लागू किया जा सकता है। यहाँ कुछ उदाहरण हैं:

  • कक्षा उदाहरण सृजन अभिव्यक्ति:

    नया @Interned MyObject ();

  • टाइप कास्ट:

    myString = (@NonNull स्ट्रिंग) str;

  • लागू करना खंड:

    क्लास अनमॉडिफायलेस्ट इम्प्लीमेंट @Readonly लिस्ट <@Readonly T> {...}

  • अपवाद अपवाद की घोषणा करें:

    शून्य मॉनिटरटाइन्स () फेंकता है @ राजनीतिक तापमान अपवाद {...}


2

हाइबरनेट जैसे फ्रेमवर्क बहुत सारे कॉन्फ़िगरेशन थे / मैपिंग की आवश्यकता है एनोटेशन का भारी उपयोग करता है।

हाइबरनेट एनोटेशन पर एक नज़र डालें


1
जब भी यह सैद्धांतिक रूप से प्रश्न का उत्तर दे सकता है, तो उत्तर के आवश्यक भागों को शामिल करना और संदर्भ के लिए लिंक प्रदान करना बेहतर होगा
रोहित गुप्ता

2

एनपीए (जावा ईई 5 से) एनोटेशन के उपयोग (ओवर) का एक उत्कृष्ट उदाहरण है। जावा ईई 6 बहुत सारे नए क्षेत्रों में एनोटेशन भी प्रस्तुत करेगा, जैसे कि प्रत्येक अच्छे पुराने सर्वलेट एपीआई के तहत रेस्टफुल वेबसर्विसेज और नए एनोटेशन।

यहाँ कई संसाधन हैं:

यह न केवल कॉन्फ़िगरेशन विनिर्देश है जो एनोटेशन द्वारा / पर ले जा सकते हैं, लेकिन उनका उपयोग व्यवहार को नियंत्रित करने के लिए भी किया जा सकता है। आप इस अच्छे को Java EE 6 के JAX-RS उदाहरणों में वापस देखते हैं।


1

यह आपकी कक्षाओं की व्याख्या करने के लिए उपयोगी है, या तो विधि, वर्ग या क्षेत्र स्तर पर, उस वर्ग के बारे में कुछ ऐसा जो वर्ग से संबंधित नहीं है।

आपके पास अपने एनोटेशन हो सकते हैं, कुछ वर्गों को केवल परीक्षण-उपयोग के रूप में चिह्नित करने के लिए उपयोग किया जाता है। यह बस प्रलेखन उद्देश्यों के लिए हो सकता है, या आप इसे एक उत्पादन रिलीज के उम्मीदवार के संकलन के दौरान इसे फ़िल्टर करके लागू कर सकते हैं।

आप कुछ मेटा डेटा स्टोर करने के लिए एनोटेशन का उपयोग कर सकते हैं, जैसे एक प्लगइन फ्रेमवर्क, उदाहरण के लिए, प्लगइन का नाम।

इसका सिर्फ एक और उपकरण है, इसके कई उद्देश्य हैं।


1

यह (ए) कंपाइलर चेक या (बी) कोड विश्लेषण द्वारा कोड के बारे में अतिरिक्त जानकारी संलग्न करता है

**

  • निम्नलिखित अंतर्निहित एनोटेशन :: 2 प्रकार हैं

**

टाइप 1) जावा कोड के लिए लागू एनोटेशन:

@Override // gives error if signature is wrong while overriding.
Public boolean equals (Object Obj) 

@Deprecated // indicates the deprecated method
Public doSomething()....

@SuppressWarnings() // stops the warnings from printing while compiling.
SuppressWarnings({"unchecked","fallthrough"})

टाइप 2) एनोटेशन अन्य एनोटेशन पर लागू होता है:

@Retention - Specifies how the marked annotation is storedWhether in code only, compiled into the class, or available at run-time through reflection.

@Documented - Marks another annotation for inclusion in the documentation.

@Target - Marks another annotation to restrict what kind of java elements the annotation may be applied to

@Inherited - Marks another annotation to be inherited to subclasses of annotated class (by default annotations are not inherited to subclasses).

**

  • कस्टम एनोटेशन ::

** http://en.wikipedia.org/wiki/Java_annotation#Custom_annotations


बेहतर काम करने की कोशिश करने के लिए बेहतर लिंक: उदाहरणों के साथ चुनें


http://www.javabeat.net/2007/08/annotations-in-java-5-0/


0

एनोटेशन का उपयोग बाहरी कॉन्फ़िगरेशन फ़ाइलों के विकल्प के रूप में किया जा सकता है, लेकिन इसे पूर्ण प्रतिस्थापन नहीं माना जा सकता है। आप कई उदाहरण पा सकते हैं, जहां एनबोटेशन का उपयोग कॉन्फ़िगरेशन फ़ाइलों को बदलने के लिए किया गया है, जैसे कि हाइबरनेट, जेपीए, ईजेबी 3 और जावा ईई में शामिल लगभग सभी प्रौद्योगिकियां।

वैसे भी यह हमेशा अच्छा विकल्प नहीं होता है। कॉन्फ़िगरेशन फ़ाइलों का उपयोग करने का उद्देश्य आमतौर पर कोड को उस वातावरण के विवरण से अलग करना है जहां एप्लिकेशन चल रहा है। ऐसी स्थितियों में, और ज्यादातर जब कॉन्फ़िगरेशन का उपयोग किसी बाहरी सिस्टम की संरचना में एप्लिकेशन को मैप करने के लिए किया जाता है, तो एनोटेशन कॉन्फ़िगरेशन फ़ाइल के लिए एक अच्छा प्रतिस्थापन नहीं है, क्योंकि वे आपको स्रोत कोड के अंदर बाहरी सिस्टम के विवरण को शामिल करने के लिए लाते हैं। आपका आवेदन। यहां बाहरी फ़ाइलों को सबसे अच्छा विकल्प माना जाता है, अन्यथा आपको स्रोत कोड को संशोधित करने और हर बार जब आप निष्पादन के माहौल में एक प्रासंगिक विवरण बदलते हैं, को पुन: व्यवस्थित करने की आवश्यकता होगी।

अतिरिक्त कोड के साथ स्रोत कोड को सजाने के लिए एनोटेशन अधिक अनुकूल होते हैं जो प्रसंस्करण उपकरण का निर्देश देते हैं, दोनों संकलन समय और रनटाइम पर, विशेष तरीके से कक्षाओं और वर्ग संरचनाओं को संभालने के लिए। @Overrideऔर JUnit @Testऐसे उपयोग के अच्छे उदाहरण हैं, जो पहले से ही अन्य उत्तरों में विस्तार से बताए गए हैं।

अंत में नियम हमेशा समान होता है: स्रोत के अंदर जो चीजें बदलती हैं उन्हें स्रोत के साथ रखें और स्रोत के बाहर उन चीजों को रखें जो स्रोत से स्वतंत्र रूप से बदलते हैं।


0

जावा ईई 5 एक्सएमएल कॉन्फ़िगरेशन पर एनोटेशन के उपयोग का पक्षधर है। उदाहरण के लिए, EJB3 में एक EJB पद्धति पर लेनदेन विशेषताओं को एनोटेशन का उपयोग करके निर्दिष्ट किया जाता है। यहां तक ​​कि वे POJO को EJB के रूप में चिह्नित करने के लिए एनोटेशन का उपयोग करते हैं और इंटरफ़ेस के उस कार्यान्वयन की आवश्यकता के बजाय विशेष तरीकों को जीवनचक्र के तरीकों के रूप में निर्दिष्ट करते हैं।


0

जावा एनोटेशन का उद्देश्य केवल एनोटेट प्रोग्राम तत्व के साथ जानकारी को जोड़ना है। जावा एनोटेशन को किसी भी घोषणा में संशोधक के रूप में उपयोग किया जा सकता है, चाहे पैकेज, वर्ग (एनम सहित), इंटरफ़ेस (एनोटेशन प्रकार सहित), फ़ील्ड, विधि, औपचारिक पैरामीटर, कंस्ट्रक्टर या स्थानीय चर।

जावा एनोटेशन का उपयोग एनम स्थिरांक पर भी किया जा सकता है। इस तरह के एनोटेशन को एनम स्थिरांक के तुरंत पहले रखा जाता है। जावा एनोटेशन पारंपरिक रूप से अन्य सभी संशोधक से पहले रखा जाता है, लेकिन यह एक आवश्यकता नहीं है; वे अन्य संशोधक के साथ स्वतंत्र रूप से रुक-रुक कर हो सकते हैं।

जावा एनोटेशन पर विस्तार से पढ़ें ।


0

निम्नलिखित कुछ ऐसे स्थान हैं जहाँ आप एनोटेशन का उपयोग कर सकते हैं।

a. Annotations can be used by compiler to detect errors and suppress warnings
b. Software tools can use annotations to generate code, xml files, documentation etc., For example, Javadoc use annotations while generating java documentation for your class.
c. Runtime processing of the application can be possible via annotations.
d. You can use annotations to describe the constraints (Ex: @Null, @NotNull, @Max, @Min, @Email).
e. Annotations can be used to describe type of an element. Ex: @Entity, @Repository, @Service, @Controller, @RestController, @Resource etc.,
f. Annotation can be used to specify the behaviour. Ex: @Transactional, @Stateful
g. Annotation are used to specify how to process an element. Ex: @Column, @Embeddable, @EmbeddedId
h. Test frameworks like junit and testing use annotations to define test cases (@Test), define test suites (@Suite) etc.,
i. AOP (Aspect Oriented programming) use annotations (@Before, @After, @Around etc.,)
j. ORM tools like Hibernate, Eclipselink use annotations

आप इस लिंक को देख सकते हैं एनोटेशन पर अधिक जानकारी के लिए को ।

आप इस लिंक को यह देखने के लिए देख सकते हैं कि सरल परीक्षण सूट बनाने के लिए एनोटेशन का उपयोग कैसे किया जाता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.