انتقل إلى المحتوى الرئيسي

الفصل 5: القاموس الكامل للتعليقات التوضيحية (A-Z)

مرجع سريع لكل التعليقات التوضيحية في Spring Boot، مرتبة أبجدياً. للحصول على أمثلة كود مفصلة، راجع الفصول من 1 إلى 4.


أ​

التعليق التوضيحيالوصف
@ActiveProfilesيُفعّل ملفات تعريف Spring محددة لاختبارات الوحدات. يسمح بتحميل application-test.yml على سبيل المثال.
@After(JUnit 4) ينفذ الكود بعد كل طريقة اختبار.
@AfterClass(JUnit 4) ينفذ الكود بعد كل طرق الاختبار في فئة.
@AfterEach(JUnit 5) ينفذ الكود بعد كل طريقة اختبار. يحل محل @After.
@Asyncينفذ طريقة بشكل غير متزامن في خيط منفصل. يتطلب @EnableAsync.
@AutoConfigureDataJpaيضبط JPA تلقائياً لاختبار وحدة.
@AutoConfigureJsonTestersيضبط أدوات التسلسل/إلغاء التسلسل JSON تلقائياً للاختبارات.
@AutoConfigureMockMvcيضبط كائن MockMvc تلقائياً لاختبار وحدة.
@AutoConfigureWebTestClientيضبط WebTestClient تلقائياً لاختبارات WebFlux.
@Autowiredيحقن تبعية (bean Spring) تلقائياً في فئة. يفضل الحقن عبر المنشئ.

ب​

التعليق التوضيحيالوصف
@Beanيعلن عن طريقة تعيد كائنًا مُدارًا بواسطة حاوية Spring. تُستخدم في الفئات @Configuration.
@Before(JUnit 4) ينفذ الكود قبل كل طريقة اختبار.
@BeforeClass(JUnit 4) ينفذ الكود قبل كل طرق الاختبار في فئة.
@BeforeEach(JUnit 5) ينفذ الكود قبل كل طريقة اختبار. يحل محل @Before.

ج​

التعليق التوضيحيالوصف
@Cacheableيخزن نتيجة طريقة في الذاكرة المؤقتة. تعيد المكالمات اللاحقة نتيجة الذاكرة المؤقتة.
@CacheConfigيضبط إعدادات الذاكرة المؤقتة (الاسم، مدة الحياة، الحجم الأقصى) لفئة كاملة.
@CacheEvictيزيل إدخالًا أو كل الإدخالات من الذاكرة المؤقتة عند استدعاء الطريقة.
@CachePutيُحدث الذاكرة المؤقتة بنتيجة الطريقة، دون استخدام الذاكرة المؤقتة الحالية.
@CircuitBreaker(Spring Cloud) يحمي طريقة من الفشل المتكرر عن طريق تحديد المكالمات عندما تكون الخدمة معطلة.
@Columnيضبط الربط بين خاصية JPA وعمود قاعدة البيانات (الاسم، nullable، فريد، الطول).
@Componentيميز فئة كـ bean Spring عام، يتم اكتشافه تلقائياً بواسطة فحص المكونات.
@ComponentScanيفحص الحزم لاكتشاف الفئات المميزة بـ @Component, @Service, @Repository, إلخ.
@Conditionalيشترط إنشاء bean بناءً على شرط مخصص.
@ConditionalOnClassينشئ bean فقط إذا كانت فئة معينة موجودة في classpath.
@ConditionalOnMissingBeanينشئ bean فقط إذا لم يكن هناك bean آخر من نفس النوع موجود بالفعل.
@ConditionalOnPropertyينشئ bean فقط إذا كانت خاصية معينة لها قيمة معينة في التكوين.
@Configurationيميز فئة تكوين Spring تحتوي على طرق @Bean.
@ConfigurationPropertiesيربط مجموعة من الخصائص من ملف التكوين إلى كائن Java (مثل: app.mail.host).
@Controllerيميز فئة كـ Spring MVC controller الذي يعيد طرق العرض (قوالب HTML).
@ControllerAdviceيحدد مستشارًا عامًا لجميع المتحكمات (إدارة استثناءات مركزية، الربط، إلخ).
@CrossOriginيسمح بطلبات HTTP عبر الأصل (CORS) من نطاقات محددة أو جميع النطاقات.

د​

التعليق التوضيحيالوصف
@DataJpaTestاختبار متخصص يقوم بتحميل طبقة JPA فقط (المستودعات، EntityManager، قاعدة بيانات في الذاكرة).
@DeleteMappingاختصار لـ @RequestMapping(method = DELETE). يربط طريقة بطلب HTTP DELETE.
@Disabled(JUnit 5) يعطل مؤقتًا اختبار وحدة دون حذفه من الكود.

هـ​

التعليق التوضيحيالوصف
@EnableAsyncيُفعل التنفيذ غير المتزامن في التطبيق. ضروري لكي يعمل @Async.
@EnableCachingيُفعل التخزين المؤقت في التطبيق. ضروري لكي يعمل @Cacheable.
@EnableConfigurationPropertiesيُفعل الربط التلقائي لخصائص التكوين إلى كائنات @ConfigurationProperties.
@EnableJmsيُفعل دعم JMS (Java Message Service) للرسائل في التطبيق.
@EnableJpaRepositoriesيُفعل دعم مستودعات Spring Data JPA. يتم تكوينه تلقائيًا بواسطة Spring Boot.
@EnableSchedulingيُفعل جدولة المهام. ضروري لكي يعمل @Scheduled.
@EnableWebMvcيُفعل تكوين Spring MVC. نادرًا ما يكون ضروريًا لأن Spring Boot يُفعله تلقائيًا.
@EnableWebSecurityيُفعل التكوين المخصص لـ Spring Security.
@EnableMethodSecurityيُفعل الأمان على مستوى الطرق (@PreAuthorize, @PostAuthorize, @Secured).
@Entityيميز فئة ككيان JPA، مرتبط بجدول في قاعدة البيانات.
@Enumeratedيحدد كيفية تخزين enum Java في قاعدة البيانات: STRING (نص) أو ORDINAL (رقم).
@EventListenerيستمع للأحداث Spring (بدء التطبيق، أحداث مخصصة، إلخ).
@ExceptionHandlerيدير استثناءً محددًا في متحكم أو @ControllerAdvice. يعيد استجابة خطأ مخصصة.
@ExtendWith(JUnit 5) يمدد وظائف الاختبارات مع الإضافات (مثل: SpringExtension, MockitoExtension).

ف​

التعليق التوضيحيالوصف
@Fallback(Spring Cloud) يوفر طريقة احتياطية عندما تكون طريقة @CircuitBreaker معطلة.
@FlywayTestيختبر ترحيلات قاعدة البيانات Flyway في اختبارات التكامل.
@Formula(Hibernate) يحدد عمودًا محسوبًا على جانب SQL، بدون عمود فعلي في القاعدة.

ج​

التعليق التوضيحيالوصف
@GeneratedValueيحدد استراتيجية التوليد التلقائي للمفتاح الأساسي (IDENTITY, SEQUENCE, UUID, AUTO).
@GetMappingاختصار لـ @RequestMapping(method = GET). يربط طريقة بطلب HTTP GET.

ع​

التعليق التوضيحيالوصف
@Idيميز حقلًا كمفتاح أساسي لكيان JPA.
@Importيستورد فئات تكوين أخرى في فئة @Configuration.
@InitBinderيخصص ربط البيانات بين طلبات HTTP وكائنات Java (التحويل، التحقق، التنسيق).

ي​

التعليق التوضيحيالوصف
@JoinColumnيحدد عمود المفتاح الأجنبي لعلاقة JPA (@ManyToOne, @OneToOne).
@JoinTableيحدد جدول الربط لعلاقة @ManyToMany (اسم الجدول، أعمدة الربط).
@JmsListenerيحدد طريقة تستمع للرسائل JMS على قائمة انتظار أو موضوع.
@JsonFormatيخصص تنسيق التسلسل JSON (التواريخ، الأرقام). مثل: @JsonFormat(pattern = "yyyy-MM-dd").
@JsonIgnoreيستبعد خاصية من التسلسل/إلغاء التسلسل JSON.
@JsonIncludeيتحكم في الخصائص المضمنة في JSON (مثل: استبعاد القيم null).
@JsonPropertyيعيد تسمية خاصية في JSON. مثل: @JsonProperty("full_name") لحقل fullName.
@JsonSubTypesيحدد الأنواع الفرعية للتسلسل المتعدد الأشكال JSON.
@JsonTestاختبار متخصص للتسلسل/إلغاء التسلسل JSON فقط.
@JsonTypeInfoيضيف معلومات النوع في JSON للسماح بالتسلسل المتعدد الأشكال.
@JsonViewيرشح الخصائص JSON وفقًا للعرض المطلوب (مثل: العرض العام مقابل عرض المسؤول).

ك​

التعليق التوضيحيالوصف
@Lazyيؤخر تهيئة bean حتى يتم استخدامه لأول مرة. يحسن وقت البدء.
@Lobيشير إلى حقل من نوع Large Object: CLOB (نص طويل) أو BLOB (ثنائي).

م​

التعليق التوضيحيالوصف
@ManyToManyيحدد علاقة عدة إلى عدة بين كيانين JPA. يستخدم جدول ربط.
@ManyToOneيحدد علاقة عدة إلى واحد. الجانب "Many" يحمل المفتاح الأجنبي.
@MessageMapping(WebSocket/STOMP) يربط طريقة بوجهة رسائل.
@MessagingGateway(Spring Integration) يحدد واجهة بوابة لإرسال الرسائل.
@MockBeanيستبدل bean Spring بـ mock Mockito في اختبار.
@MockMvcيحقن مثيل MockMvc لمحاكاة طلبات HTTP في الاختبارات.
@ModelAttributeيربط معلمات طلب HTTP بكائن Java. يستخدم أيضًا لإضافة سمات إلى نموذج MVC.
@Modifyingيشير إلى أن طريقة @Query تنفذ UPDATE أو DELETE (وليس SELECT).

ن​

التعليق التوضيحيالوصف
@NamedQueryيحدد استعلام JPQL مسمى مباشرة على كيان.
@NamedQueriesيجمع عدة @NamedQuery على نفس الكيان.

و​

التعليق التوضيحيالوصف
@OneToManyيحدد علاقة واحد إلى عدة بين كيانين JPA. الجانب "One" هو الوالد.
@OneToOneيحدد علاقة واحد إلى واحد بين كيانين JPA.
@Orderيحدد ترتيب أولوية bean. كلما كان الرقم أصغر، كانت الأولوية أعلى.

ب​

التعليق التوضيحيالوصف
@PatchMappingاختصار لـ @RequestMapping(method = PATCH). تحديث جزئي لمورد.
@PathVariableيستخرج متغيرًا من مسار URL. مثل: /users/\{id\} → @PathVariable Long id.
@PostAuthorizeيتحقق من الأذونات بعد تنفيذ طريقة (يمكنه التحقق من القيمة المعادة).
@PostConstructينفذ طريقة مباشرة بعد حقن جميع تبعيات bean.
@PostMappingاختصار لـ @RequestMapping(method = POST). إنشاء مورد جديد.
@PreAuthorizeيتحقق من الأذونات قبل تنفيذ طريقة. يدعم تعبيرات SpEL.
@PreDestroyينفذ طريقة مباشرة قبل تدمير bean (تنظيف، إغلاق الاتصالات).
@Primaryيحدد bean الافتراضي عندما يوجد عدة beans من نفس النوع.
@Profileيُفعل bean أو تكوين فقط لبعض ملفات التعريف (dev، test، prod).
@PutMappingاختصار لـ @RequestMapping(method = PUT). استبدال كامل لمورد.

س​

التعليق التوضيحيالوصف
@Qualifierيحدد أي bean يتم حقنه عندما يوجد عدة beans من نفس النوع.
@Queryيحدد استعلام JPQL أو SQL أصلي مخصص على طريقة مستودع.

ر​

التعليق التوضيحيالوصف
@Repositoryيميز فئة كطبقة وصول إلى البيانات. يُفعل ترجمة الاستثناءات SQL إلى استثناءات Spring.
@RequestBodyيُلغي تسلسل جسم طلب HTTP (JSON) إلى كائن Java.
@RequestHeaderيستخرج قيمة رأس HTTP (Authorization، Content-Type، User-Agent، إلخ).
@RequestMappingتعليق توضيحي أساسي لربط URL بمتحكم أو طريقة. يمكن تحديد طريقة HTTP.
@RequestParamيستخرج معلمة من سلسلة الاستعلام. مثل: /search?name=Java → @RequestParam String name.
@RequestPartيستخرج جزءًا من طلب HTTP متعدد الأجزاء (ملفات، صور محملة).
@ResponseBodyيجبر الطريقة على إعادة JSON/XML مباشرة في جسم استجابة HTTP.
@ResponseStatusيحدد رمز HTTP المعاد بواسطة طريقة (200، 201، 204، 404، إلخ) أو استثناء.
@RestClientTestاختبار متخصص للعملاء REST. يقوم بتحميل تكوين العميل فقط.
@RestControllerمزيج من @Controller + @ResponseBody. كل طريقة تعيد JSON مباشرة.
@RestControllerAdviceمزيج من @ControllerAdvice + @ResponseBody. إدارة استثناءات عامة لـ API REST.
@Retryable(Spring Retry) يعيد محاولة تنفيذ طريقة تلقائيًا في حالة الفشل (مثل: خطأ شبكة أو قاعدة بيانات).
@RolesAllowed(JSR-250) يحدد الأدوار المسموح بها لطريقة. بديل قياسي لـ @Secured.

ش​

التعليق التوضيحيالوصف
@Scheduledيخطط لتنفيذ دوري لطريقة (fixedRate, fixedDelay, cron). يتطلب @EnableScheduling.
@Scopeيحدد نطاق bean: singleton (افتراضي)، prototype, request, session, application.
@Securedيحدد الأدوار المطلوبة للوصول إلى طريقة. أبسط من @PreAuthorize.
@SendTo(WebSocket/STOMP) يحدد وجهة الرد لرسالة WebSocket.
@Serviceيميز فئة كطبقة منطق الأعمال. يتم اكتشافه بواسطة فحص المكونات.
@SessionAttributesيخزن سمات النموذج في جلسة HTTP بين الطلبات.
@SessionScopeيحدد نطاق bean كجلسة HTTP (bean واحد لكل جلسة مستخدم).
@SpyBeanيلف bean حقيقي بـ spy Mockito في الاختبارات (استدعاءات حقيقية باستثناء تلك المُعوَّضة/stub).
@SpringBootApplicationنقطة دخول التطبيق. يجمع بين @Configuration, @EnableAutoConfiguration و @ComponentScan.
@SpringBootTestيقوم بتحميل سياق Spring الكامل لاختبارات التكامل.
@Sqlينفذ نصوص SQL قبل أو بعد اختبار لإعداد أو تنظيف قاعدة البيانات.

ت​

التعليق التوضيحيالوصف
@Tableيخصص اسم الجدول، المخطط، قيود التفرد والفهارس لكيان JPA.
@Test(JUnit) يميز طريقة كاختبار وحدة.
@TestConfigurationيوفر تكوين Spring خاص بالاختبارات (beans اختبار، mocks).
@Timeout(JUnit 5) يحدد حدًا زمنيًا أقصى لتنفيذ اختبار. يفشل الاختبار إذا تم تجاوز الحد.
@Transactionalيدير المعاملات قاعدة البيانات. يلتزم إذا نجح، يتراجع إذا كان هناك استثناء. readOnly = true يحسن القراءات.
@TransactionalEventListenerيستمع لحدث Spring وينفذه فقط بعد الالتزام (أو التراجع) للمعاملة.
@Transientيستبعد حقلًا من الاستمرارية JPA (لا يوجد عمود في قاعدة البيانات).

ف​

التعليق التوضيحيالوصف
@Validيُفعل التحقق من صحة Bean Validation على كائن (@NotNull, @Size, @Email, إلخ).
@Validatedنسخة Spring من @Valid مع دعم مجموعات التحقق.
@Valueيحقن قيمة من ملف التكوين. مثل: @Value("${app.name}"). يدعم القيم الافتراضية وSpEL.
@ValueSource(JUnit 5) يوفر قيم إدخال لاختبار معلمات.

و​

التعليق التوضيحيالوصف
@WebFluxTestاختبار متخصص للمتحكمات WebFlux (برمجة تفاعلية).
@WebMvcTestاختبار متخصص يقوم بتحميل طبقة المتحكم MVC فقط (لا قاعدة بيانات، لا خدمات حقيقية).
@WebTestClientيحقن WebTestClient لمحاكاة طلبات HTTP في اختبارات WebFlux.

التعليقات التوضيحية للتحقق (Bean Validation)​

التعليق التوضيحيالوصف
@NotNullلا يمكن أن يكون الحقل null.
@NotEmptyلا يمكن أن يكون الحقل null ولا فارغًا (String، Collection، Map).
@NotBlankلا يمكن أن يكون الحقل null، فارغًا أو يحتوي فقط على مسافات.
@Size(min, max)يجب أن يكون الحجم بين min و max (String، Collection).
@Min(value)يجب أن تكون القيمة الرقمية أكبر من أو تساوي value.
@Max(value)يجب أن تكون القيمة الرقمية أقل من أو تساوي value.
@Emailيجب أن يكون الحقل بتنسيق عنوان بريد إلكتروني صالح.
@Pattern(regexp)يجب أن يتطابق الحقل مع التعبير العادي المعطى.
@Positiveيجب أن يكون الرقم موجبًا تمامًا (> 0).
@PositiveOrZeroيجب أن يكون الرقم موجبًا أو صفرًا (>= 0).
@Negativeيجب أن يكون الرقم سالبًا تمامًا (< 0).
@Pastيجب أن يكون التاريخ في الماضي.
@Futureيجب أن يكون التاريخ في المستقبل.
@DecimalMinيجب أن تكون القيمة العشرية أكبر من أو تساوي الحد الأدنى.
@DecimalMaxيجب أن تكون القيمة العشرية أقل من أو تساوي الحد الأقصى.

الإحصائيات​

في الملخص

يغطي هذا القاموس 120+ تعليق توضيحي موزعة على:

  • Core Spring : ~25 تعليق توضيحي (IoC، DI، التكوين، دورة الحياة)
  • Web / REST : ~20 تعليق توضيحي (الربط، المعلمات، الردود، الأخطاء)
  • Data / JPA : ~20 تعليق توضيحي (الكيانات، العلاقات، الاستعلامات، المعاملات)
  • JSON / Jackson : ~7 تعليقات توضيحية (التنسيق، الفلترة، التجاهل)
  • Security : ~7 تعليقات توضيحية (التكوين، التفويض)
  • Cache : ~5 تعليقات توضيحية (cacheable، evict، put، config)
  • Async / Scheduling : ~5 تعليقات توضيحية
  • Test : ~25 تعليق توضيحي (JUnit، Spring Test، mocks)
  • Validation : ~15 تعليق توضيحي (Bean Validation)
  • Messaging : ~5 تعليقات توضيحية (JMS، WebSocket)
  • Cloud / Resilience : ~3 تعليقات توضيحية (CircuitBreaker، Retry، Fallback)

⬅️ العودة إلى الوحدة 17 | ⬅️ العودة إلى الصفحة الرئيسية