আমরা টীকাগুলি ব্যবহার করতে পারি এমন প্রধান ক্ষেত্রগুলি কী কী? বৈশিষ্ট্যটি কি এক্সএমএল ভিত্তিক কনফিগারেশনের পরিবর্তে?
আমরা টীকাগুলি ব্যবহার করতে পারি এমন প্রধান ক্ষেত্রগুলি কী কী? বৈশিষ্ট্যটি কি এক্সএমএল ভিত্তিক কনফিগারেশনের পরিবর্তে?
উত্তর:
টীকাগুলি হ'ল মেটা-মেটা-অবজেক্টস যা অন্যান্য মেটা-অবজেক্টগুলি বর্ণনা করতে ব্যবহার করা যেতে পারে । মেটা-অবজেক্টগুলি ক্লাস, ক্ষেত্র এবং পদ্ধতি। এর মেটা-অবজেক্টের জন্য কোনও বস্তু জিজ্ঞাসা করা (উদাহরণস্বরূপ anObj.getClass()
) ইন্ট্রোস্পেকশন বলে । অন্তঃকরণটি আরও এগিয়ে যেতে পারে এবং আমরা কোনও মেটা-অবজেক্টটি জিজ্ঞাসা করতে পারি এর টীকাগুলি কী (উদাহরণস্বরূপ aClass.getAnnotations
)। অন্তর্দর্শন এবং টীকা কি বলা হয় অন্তর্গত প্রতিফলন এবং মেটা-প্রোগ্রামিং ।
একটি টীকাটি দরকারী বা অন্যভাবে ব্যাখ্যা করার প্রয়োজন needs টিকা উন্নয়নের সময় আইডিই বা সংকলক দ্বারা বা রান-টাইমে কোনও ফ্রেমওয়ার্ক দ্বারা ব্যাখ্যা করা যেতে পারে ।
টিকা প্রক্রিয়াকরণ একটি খুব শক্তিশালী প্রক্রিয়া এবং এটি বিভিন্ন উপায়ে ব্যবহার করা যেতে পারে:
@Deprecated, @Override
, বা@NotNull
@Entity, @TestCase, @WebService
@Statefull, @Transaction
@Column, @XmlElement
সমস্ত ক্ষেত্রে, একটি টীকাটি উপাদানটি বর্ণনা করতে এবং এর অর্থ পরিষ্কার করার জন্য ব্যবহৃত হয় ।
জেডিকে 5 এর আগে, টীকাগুলি দিয়ে এখন যে তথ্য প্রকাশ করা হয়েছে তা অন্য কোথাও সংরক্ষণ করার প্রয়োজন ছিল এবং এক্সএমএল ফাইলগুলি প্রায়শই ব্যবহৃত হত। তবে টীকাগুলি ব্যবহার করা আরও সুবিধাজনক কারণ এগুলি নিজেই জাভা কোডের অন্তর্ভুক্ত, এবং তাই এক্সএমএল থেকে ম্যানিপুলেট করা খুব সহজ।
টীকাগুলির ব্যবহার:
... লম্বোক প্রজেক্টে উদাহরণস্বরূপ দেখুন , যা কীভাবে উত্পন্ন করা যায় equals
বা hashCode
পদ্ধতিগুলি নির্ধারণ করতে টীকাগুলি ব্যবহার করে।
জাভার টীকাগুলির জন্য একাধিক অ্যাপ্লিকেশন রয়েছে। প্রথমত, তারা সংকলক (বা সংকলক এক্সটেনশন) দ্বারা ব্যবহৃত হতে পারে। উদাহরণস্বরূপ ওভাররাইড টীকাটি বিবেচনা করুন :
class Foo {
@Override public boolean equals(Object other) {
return ...;
}
}
এটি আসলে জাভা জেডিকে দিয়ে তৈরি। সংকলকটি একটি ত্রুটি সিগন্যাল করবে, যদি কোনও পদ্ধতি এটির সাথে ট্যাগ করা হয়, যা বেস ক্লাস থেকে উত্তরাধিকার সূত্রে প্রাপ্ত কোনও পদ্ধতিকে ওভাররাইড করে না । এই টীকাগুলি সাধারণ ভুল এড়াতে সহায়ক হতে পারে, যেখানে আপনি আসলে কোনও পদ্ধতিকে ওভাররাইড করার ইচ্ছা করেন তবে তা করতে ব্যর্থ হন, কারণ আপনার পদ্ধতিতে দেওয়া স্বাক্ষরটি সেই পদ্ধতিটির স্বাক্ষরের সাথে মেলে না যে ওভাররাইড হচ্ছে:
class Foo {
@Override public boolean equals(Foo other) { // Compiler signals an error for this one
return ...;
}
}
জেডিকে। হিসাবে, যে কোনও প্রকারে টীকাগুলি অনুমোদিত। এই বৈশিষ্ট্যটি এখন নোটনুলের মতো সংকলক টীকাগুলির জন্য যেমন :
public void processSomething(@NotNull String text) {
...
}
যা সংকলকটি আপনাকে ভেরিয়েবল এবং নাল মানগুলির অনুপযুক্ত / চেক না করা ব্যবহার সম্পর্কে সতর্ক করতে দেয় ।
টীকাগুলির জন্য আরও একটি আরও উন্নত অ্যাপ্লিকেশনটিতে রান-টাইমে প্রতিবিম্ব এবং টিকা প্রক্রিয়াকরণ জড়িত। আপনি "এক্সএমএল ভিত্তিক কনফিগারেশনের প্রতিস্থাপন" হিসাবে টীকাগুলির কথা বলার সময় এটি আপনার মনে ছিল (আমি মনে করি)। এটি প্রয়োজনীয় ধরণের ডেটা এবং কনফিগারেশন তথ্য সরবরাহ করার জন্য বিভিন্ন ধরণের ফ্রেমওয়ার্ক এবং জেসিপি স্ট্যান্ডার্ড (দৃ pers়তা, নির্ভরতা ইনজেকশন, আপনি এটি নাম দিয়েছিলেন) দ্বারা ব্যবহৃত এনোটোটেশন প্রক্রিয়াজাতকরণ of
টীকাগুলি একটি জাভা উত্স ফাইলটিতে মেটাডেটা (ডেটা সম্পর্কিত ডেটা) যুক্ত করা হয়। এগুলি ক্লায়েন্ট কোডের ইন্টিগ্রেশনকে সহজ করার জন্য ফ্রেমওয়ার্কের মাধ্যমে বেশিরভাগ ক্ষেত্রে ব্যবহৃত হয়। আমার মাথার উপরের অংশে বাস্তব বিশ্বের বেশ কয়েকটি উদাহরণ:
4 ইউনাইট - আপনি @Test
প্রতিটি পরীক্ষার পদ্ধতিতে টীকা যুক্ত করুন আপনি চান যে জুনিট রানার রান করুন। পরীক্ষার সেট আপ করার সাথে সাথে আরও অতিরিক্ত টিকা রয়েছে (যেমন @Before
এবং @BeforeClass
)। এগুলি সমস্ত JUnit রানার দ্বারা প্রসেস করা হয়, যা সেই অনুযায়ী পরীক্ষা চালায়। আপনি বলতে পারেন এটি এক্সএমএল কনফিগারেশনের প্রতিস্থাপন, তবে টীকাগুলি কখনও কখনও আরও শক্তিশালী হয় (তারা প্রতিবিম্ব ব্যবহার করতে পারে, উদাহরণস্বরূপ) এবং তারা যে কোডটি উল্লেখ করছে তার @Test
নিকটেই রয়েছে ( টীকা পরীক্ষার আগে টীকাটি সঠিক, সুতরাং উদ্দেশ্য) যে পদ্ধতিটি পরিষ্কার - ডকুমেন্টেশন হিসাবে কাজ করে)। অন্যদিকে এক্সএমএল কনফিগারেশন আরও জটিল হতে পারে এবং টীকাগুলির চেয়ে অনেক বেশি ডেটা অন্তর্ভুক্ত থাকতে পারে।
টেরাকোটা - উভয় টিকা এবং এক্সএমএল কনফিগারেশন ফাইল ব্যবহার করে। উদাহরণস্বরূপ, @Root
টিকাটি টেরাকোটার রানটাইমকে বলে যে টীকাযুক্ত ক্ষেত্রটি একটি মূল এবং এর মেমরিটি ভিএম উদাহরণগুলির মধ্যে ভাগ করা উচিত। এক্সএমএল কনফিগারেশন ফাইলটি সার্ভারটি কনফিগার করার জন্য এবং কোন ক্লাসটি ইনস্ট্রুমেন্টে তা জানাতে ব্যবহৃত হয়।
গুগল গুইস - উদাহরণটি এমন @Inject
টীকাগুলি হবে যা কোনও কনস্ট্রাক্টরের জন্য প্রয়োগ করা হলে সংজ্ঞায়িত ইনজেক্টরগুলির উপর ভিত্তি করে প্রতিটি প্যারামিটারের জন্য গুইস রানটাইম চেহারা তৈরি করে। @Inject
টীকা এক্সএমএল কনফিগারেশন ফাইল ব্যবহার প্রতিলিপি বেশ কঠিন হবে, এবং কন্সট্রাকটর এটি রেফারেন্স তার নৈকট্য বেশ উপকারী (সমস্ত নির্ভরতা ইনজেকশনও আপনার সেট আপ করা এটি একটি বিশাল XML ফাইল করার জন্য অনুসন্ধান করা কল্পনা)।
আশাকরি আমি কীভাবে বিভিন্ন ফ্রেমওয়ার্কগুলিতে টীকাগুলি ব্যবহৃত হয় তার একটি গন্ধ দিয়েছি।
জাভাতে টিকা, শ্রেণি, ক্ষেত্র এবং পদ্ধতিগুলি বর্ণনা করার একটি মাধ্যম সরবরাহ করে। মূলত, এগুলি জাভা উত্স ফাইলে যুক্ত হওয়া মেটাডেটার একটি ফর্ম, তারা সরাসরি কোনও প্রোগ্রামের শব্দার্থকে প্রভাবিত করতে পারে না। তবে প্রতিবিম্ব ব্যবহার করে টীকাগুলি রান-টাইমে পড়া যায় এবং এই প্রক্রিয়াটি ইন্ট্রোস্পেকশন হিসাবে পরিচিত। তারপরে এটি ক্লাস, ক্ষেত্র বা পদ্ধতি পরিবর্তন করতে ব্যবহৃত হতে পারে।
এই বৈশিষ্ট্যটি প্রায়শই লাইব্রেরি এবং এসডিকে (হাইবারনেট, ইউনাইট, স্প্রিং ফ্রেমওয়ার্ক) দ্বারা ব্যবহৃত হয় যা কোনও প্রোগ্রামার এই লাইব্রেরি বা এসডিকে নিয়ে কাজ করার জন্য অররে না করে যদি এই কোডের পরিমাণ সহজ করে বা হ্রাস করতে পারে। সুতরাং, এনেটেশনগুলি বলা ভাল এবং জাভাতে হাতের প্রতিবিম্ব কাজ।
আমরা কমেন্ট-টাইম বা রানটাইম উভয় ক্ষেত্রেই কোনও টীকাটির প্রাপ্যতা সীমাবদ্ধ করতে পারি el নীচে একটি কাস্টম টিকা তৈরির একটি সাধারণ উদাহরণ
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";
}
এটি কি এক্সএমএল ভিত্তিক কনফিগারেশনের প্রতিস্থাপন?
সম্পূর্ণরূপে নয়, তবে সংগঠন যা কোড স্ট্রাকচারের (যেমন জেপিএ ম্যাপিংস বা স্প্রিংয়ের নির্ভরতা ইনজেকশন) এর সাথে ঘনিষ্ঠভাবে মিলিত হয় প্রায়শই টীকাগুলির সাথে প্রতিস্থাপন করা যেতে পারে এবং পরে সাধারণত খুব কম ভার্বোস, বিরক্তিকর এবং বেদনাদায়ক হয়। খুব সুন্দর সমস্ত উল্লেখযোগ্য ফ্রেমওয়ার্কগুলি এই স্যুইচটিকে তৈরি করেছে, যদিও পুরানো এক্সএমএল কনফিগারেশন সাধারণত বিকল্প হিসাবে থাকে।
টীকাগুলির 2 টি মতামত রয়েছে
ব্যবহারকারীর দর্শন, বেশিরভাগ সময় টীকা শর্টকাটের মতো কাজ করে, আপনাকে কিছু কী স্ট্রোক বাঁচায় বা আপনার প্রোগ্রামকে আরও পঠনযোগ্য করে তোলে
বিক্রেতার দর্শন, প্রসেসরের দৃষ্টিভঙ্গিটি হালকা ওজনযুক্ত 'ইন্টারফেস' এর চেয়ে বেশি, আপনার প্রোগ্রামটি কোনও কিছুর মুখোমুখি হয় তবে নির্দিষ্ট ইন্টারফেসকে স্পষ্টভাবে "প্রয়োগ" না করে (এখানে টীকাটি অ্যানোটেশন)
উদাহরণস্বরূপ জেপায় আপনি এর মতো কিছু সংজ্ঞায়িত করেছেন
@Entity class Foo {...}
পরিবর্তে
class Foo implements Entity {...}
দুজনেই একই কথা বলে "ফু একটি সত্তা শ্রেণি"
যেখানে টীকা ব্যবহার করা যেতে পারে
টীকাগুলিতে টীকাগুলি প্রয়োগ করা যেতে পারে: ক্লাস, ক্ষেত্র, পদ্ধতি এবং অন্যান্য প্রোগ্রাম উপাদানগুলির ঘোষণা। যখন কোনও ঘোষণার জন্য ব্যবহৃত হয়, প্রতিটি টীকা প্রায়শই কনভেনশন দ্বারা নিজস্ব লাইনে উপস্থিত হয়।
জাভা এসই 8 আপডেট: ধরণের ব্যবহারের জন্য টিকাগুলিও প্রয়োগ করা যেতে পারে। এখানে কিছু উদাহরন:
শ্রেণীর উদাহরণ সৃষ্টি এক্সপ্রেশন:
নতুন @ অন্তর্নিহিত মাইবজেক্ট ();
কাস্ট টাইপ করুন:
মাইস্ট্রিং = (@ নননুল স্ট্রিং) টিআর;
ধারা প্রয়োগ করে:
ক্লাস আনমোডাফাইএবললিস্ট প্রয়োগ করে @ রিডনলি তালিকা <@ রেডনলি টি> {...}
নিক্ষিপ্ত ব্যতিক্রম ঘোষণা:
অকার্যকর মনিটরেটেমারিচার () ক্রিটিকাল টেম্পারেচারএক্সেপশন {...}
হাইবারনেটের মতো ফ্রেমওয়ার্কগুলি প্রচুর পরিমাণে কনফিগারেশন / ম্যাপিংয়ের দরকার ছিল এনটেশনগুলি ভারীভাবে ব্যবহার করা হয়।
হাইবারনেট টীকাগুলি একবার দেখুন
জেপিএ (জাভা EE 5 থেকে) টীকাগুলির (ওভার) ব্যবহারের একটি দুর্দান্ত উদাহরণ। জাভা EE 6 এছাড়াও নতুন পুরানো সার্ভারলেট এপিআই এর অধীনে আরএসএসএলফুল ওয়েবসার্চিসমূহ এবং নতুন টীকাগুলির মতো প্রচুর নতুন ক্ষেত্রে এনটেশনগুলি প্রবর্তন করবে।
এখানে বেশ কয়েকটি সংস্থান রয়েছে:
এটি কেবলমাত্র কনফিগারেশন নির্দিষ্টকরণগুলি নয় যা টীকাগুলির দ্বারা গ্রহণ করা যেতে পারে / তা ব্যবহার করা যায় না, তবে সেগুলি আচরণ নিয়ন্ত্রণ করতেও ব্যবহৃত হতে পারে। আপনি জাভা EE 6 এর JAX-RS উদাহরণগুলিতে এই ভাল ফিরে দেখতে পাবেন।
এটি আপনার ক্লাসগুলি, পদ্ধতি, শ্রেণি বা ক্ষেত্রের স্তরে, শ্রেণীর সাথে কিছু সম্পর্কিত যা শ্রেণীর সাথে পুরোপুরি সম্পর্কিত নয় ot
আপনার নিজের টীকা থাকতে পারে যা নির্দিষ্ট ক্লাসকে কেবল পরীক্ষার জন্য ব্যবহার হিসাবে চিহ্নিত করে। এটি কেবল ডকুমেন্টেশনের উদ্দেশ্যেই হতে পারে, বা আপনি কোনও উত্পাদন প্রকাশের প্রার্থীর সংকলনের সময় এটি ফিল্টার করে প্রয়োগ করতে পারেন।
আপনি কিছু মেটা ডেটা যেমন প্লাগইন ফ্রেমওয়ার্কে যেমন প্লাগইনটির নাম সংরক্ষণ করতে টীকাগুলি ব্যবহার করতে পারেন।
এটি ঠিক অন্য একটি সরঞ্জাম, এর অনেকগুলি উদ্দেশ্য রয়েছে।
এটি (ক) সংকলক চেক বা (খ) কোড বিশ্লেষণ দ্বারা কোড সম্পর্কিত অতিরিক্ত তথ্য সংযুক্ত করে
**
**
প্রকার 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 stored—Whether 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.wikedia.org/wiki/Java_annotation#Custom_annotations
নীচের লিঙ্কটি ব্যবহার করে আরও ভাল বোঝার জন্য: উদাহরণগুলির সাথে বিস্তারিত
টীকাগুলি বহিরাগত কনফিগারেশন ফাইলের বিকল্প হিসাবে ব্যবহৃত হতে পারে তবে এটি সম্পূর্ণ প্রতিস্থাপন হিসাবে বিবেচনা করা যায় না। আপনি অনেকগুলি উদাহরণ খুঁজে পেতে পারেন যেখানে হাইবারনেট, জেপিএ, ইজেবি 3 এবং জাভা ইইতে অন্তর্ভুক্ত প্রায় সমস্ত প্রযুক্তিগুলির মতো কনফিগারেশন ফাইলগুলি প্রতিস্থাপন করতে টীকাগুলি ব্যবহার করা হয়েছে।
যাইহোক এটি সর্বদা ভাল পছন্দ নয়। কনফিগারেশন ফাইলগুলি ব্যবহার করার উদ্দেশ্যটি হল সাধারণত অ্যাপ্লিকেশনটি যে পরিবেশে চলছে তার বিবরণ থেকে কোডটি আলাদা করা। এই ধরনের পরিস্থিতিতে এবং বেশিরভাগ সময় যখন কনফিগারেশনটি কোনও বাহ্যিক সিস্টেমের কাঠামোতে অ্যাপ্লিকেশনটি ম্যাপ করার জন্য ব্যবহৃত হয়, কনফিগারেশন ফাইলের জন্য টীকাগুলি ভাল প্রতিস্থাপন নয়, কারণ তারা আপনাকে উত্সের কোডের অভ্যন্তরে বাহ্যিক সিস্টেমের বিশদ অন্তর্ভুক্ত করতে নিয়ে আসে as আপনার আবেদন. এখানে বাহ্যিক ফাইলগুলি সর্বোত্তম পছন্দ হিসাবে বিবেচিত হবে, অন্যথায় আপনাকে উত্সের কোডটি সংশোধন করতে হবে এবং প্রতিবার কার্যকর করার পরিবেশে কোনও প্রাসঙ্গিক বিশদ পরিবর্তন করার সময় পুনরায় সংকলন করতে হবে।
সংকলনের সময় এবং রানটাইম সময়ে, ক্লাস এবং শ্রেণিবদ্ধ কাঠামো বিশেষ উপায়ে পরিচালনা করতে অতিরিক্ত তথ্য দিয়ে উত্স কোডটি সাজানোর জন্য টীকাগুলি আরও বেশি উপযুক্ত। @Override
এবং জুনিত হ'ল এই জাতীয় @Test
ব্যবহারের ভাল উদাহরণ, ইতিমধ্যে অন্যান্য উত্তরে বিস্তারিতভাবে ব্যাখ্যা করা হয়েছে।
শেষ পর্যন্ত নিয়মটি সর্বদা একই থাকে: উত্সের সাথে পরিবর্তিত জিনিসগুলি উত্সের অভ্যন্তরে রাখুন এবং উত্স থেকে স্বাধীনভাবে পরিবর্তিত জিনিসগুলি উত্সের বাইরে রাখুন।
জাভা EE 5 এক্সএমএল কনফিগারেশনের মাধ্যমে টীকা ব্যবহারের পক্ষে। উদাহরণস্বরূপ, EJB3 এ একটি ইজেবি পদ্ধতিতে লেনদেনের বৈশিষ্ট্যগুলি টীকাগুলি ব্যবহার করে নির্দিষ্ট করা হয়েছে। এমনকি তারা পজোগুলিকে ইজেবি হিসাবে চিহ্নিত করতে এবং কোনও ইন্টারফেসের প্রয়োগের প্রয়োজনের পরিবর্তে নির্দিষ্ট পদ্ধতিটিকে জীবনচক্র পদ্ধতি হিসাবে নির্দিষ্ট করার জন্য টীকাগুলি ব্যবহার করে।
একটি জাভা টিকা দেওয়ার উদ্দেশ্যটি হ'ল এনোটেটেড প্রোগ্রামের উপাদানগুলির সাথে তথ্য যুক্ত করা। প্যাকেজ, শ্রেণি (এনাম সহ), ইন্টারফেস (টীকা প্রকরণ সহ), ক্ষেত্র, পদ্ধতি, ফর্মাল প্যারামিটার, কনস্ট্রাক্টর বা স্থানীয় ভেরিয়েবল যেকোন ঘোষণায় জাভা টীকাগুলি সংশোধনকারী হিসাবে ব্যবহৃত হতে পারে।
জাভা টীকাগুলি এনাম ধ্রুবকগুলিতে ব্যবহার করা যেতে পারে। এই ধরণের এনোটেশনগুলি এনটেট করার জন্য এনাম ধ্রুবকের সাথে সাথেই স্থাপন করা হয়। জাভা টীকাগুলি প্রচলিতভাবে অন্যান্য সমস্ত সংশোধকগুলির আগে স্থাপন করা হয়, তবে এটি কোনও প্রয়োজন নয়; এগুলি অন্য সংশোধকগুলির সাথে অবাধে সংমিশ্রিত হতে পারে।
জাভা টীকাগুলি সম্পর্কে বিস্তারিত পড়ুন ।
নীচে কয়েকটি স্থান যেখানে আপনি টীকা ব্যবহার করতে পারেন are
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
টীকাগুলিতে আরও বিশদ জানতে আপনি এই লিঙ্কটি উল্লেখ করতে পারেন ।
সাধারণ পরীক্ষার স্যুট তৈরি করতে কীভাবে টীকাগুলি ব্যবহৃত হয় তা দেখতে আপনি এই লিঙ্কটি উল্লেখ করতে পারেন।