تُستخدم تعليقة Spring Component لتحديد فئة كمكون. وهذا يعني أن الإطار الربيعي سيقوم بالكشف التلقائي عن هذه الفئات لحقن التبعية عند استخدام التكوين القائم على التعليقات وفحص مسار الفئة.
مكون Spring
ببساطة، المكون مسؤول عن بعض العمليات. يوفر إطار الربيع ثلاث تعليقات محددة أخرى لاستخدامها عند وضع علامة على فئة كمكون.
Service
: يشير إلى أن الفئة توفر بعض الخدمات. يمكن وضع علامات على فئات الخدمة الخاصة بنا كفئات خدمة.Repository
: تشير هذه التعليقة إلى أن الفئة تتعامل مع عمليات CRUD، وعادة ما تُستخدم مع تنفيذات DAO التي تتعامل مع جداول قواعد البيانات.Controller
: يُستخدم بشكل رئيسي مع تطبيقات الويب أو خدمات ويب REST لتحديد أن الفئة هي وحدة التحكم الأمامية والمسؤولة عن معالجة طلب المستخدم وإرجاع الاستجابة المناسبة.
تذكر أن جميع هذه الإشارات الأربعة موجودة في حزمة org.springframework.stereotype
وجزء من ملف spring-context
jar. في معظم الأحيان، ستكون فئات المكونات لدينا ضمن واحدة من الإشارات المتخصصة الثلاثة، لذا قد لا تستخدم إشارة @Component
كثيرًا.
مثال على المكون الربيعي
لنقم بإنشاء تطبيق بسيط جدًا لـ Spring maven لعرض استخدام إشارة Spring Component وكيفية اكتشاف Spring لها بواسطة التكوين القائم على الإشارات وفحص مسار الفئات. قم بإنشاء مشروع maven وأضف تبعية أساسية للربيع التالية.
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.6.RELEASE</version>
</dependency>
هذا كل ما نحتاجه للحصول على ميزات الأساسية لإطار الربيع. لنقم بإنشاء فئة مكون بسيطة ووضع علامة عليها بواسطة @Component
.
package com.journaldev.spring;
import org.springframework.stereotype.Component;
@Component
public class MathComponent {
public int add(int x, int y) {
return x + y;
}
}
الآن يمكننا إنشاء سياق ربيع قائم على الإشارات والحصول على فولف الفئة MathComponent
منه.
package com.journaldev.spring;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class SpringMainClass {
public static void main(String[] args) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
context.scan("com.journaldev.spring");
context.refresh();
MathComponent ms = context.getBean(MathComponent.class);
int result = ms.add(1, 2);
System.out.println("Addition of 1 and 2 = " + result);
context.close();
}
}
قم بتشغيل الفئة أعلاه كتطبيق جافا عادي ويجب أن تحصل على الإخراج التالي في وحدة التحكم.
Jun 05, 2018 12:49:26 PM org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@ff5b51f: startup date [Tue Jun 05 12:49:26 IST 2018]; root of context hierarchy
Addition of 1 and 2 = 3
Jun 05, 2018 12:49:26 PM org.springframework.context.support.AbstractApplicationContext doClose
INFO: Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@ff5b51f: startup date [Tue Jun 05 12:49:26 IST 2018]; root of context hierarchy
هل لاحظت قوة Spring، لم نحتاج إلى القيام بأي شيء لحقن مكوننا في سياق Spring. يوضح الصورة أدناه هيكل الدليل لمشروعنا مثال على المكون الربيعي. يمكننا أيضًا تحديد اسم المكون ومن ثم الحصول عليه من سياق Spring باستخدام نفس الاسم.
@Component("mc")
public class MathComponent {
}
MathComponent ms = (MathComponent) context.getBean("mc");
رغم أنني استخدمت الشروط @Component
مع MathComponent، فهي في الواقع فئة خدمة ويجب علينا استخدام @Service
شروط. النتيجة ستظل نفسها.
يمكنك التحقق من المشروع من مستودع GitHub.
المرجع: وثائق API
Source:
https://www.digitalocean.com/community/tutorials/spring-component