קיץ @Component

האננוטציה של הרכיב ב- Spring משמשת לסימון של מחלקה כרכיב (Component). זה אומר ש-ספריית Spring תזהה אוטומטית מחלקות אלו לצורך הזרמת תלות כאשר נעשה שימוש בהגדרה מבוססת האננוטציות וסריקת מסלול.

רכיב Spring

במונחים פשוטים, רכיב הוא אחראי על פעולות מסוימות. ספריית Spring מספקת שלוש אננוטציות נוספות שניתן להשתמש בהן כאשר מסומןת מחלקה כ- Component.

  1. Service: מסמן שהמחלקה מספקת שירותים מסוימים. ניתן לסמן מחלקות שליטה בשירותים שלנו כמחלקות שירות.
  2. Repository: האנוטציה הזו מציינת שהמחלקה עוסקת בפעולות CRUD, נהוג להשתמש בה במימושים של DAO העוסקים בטבלאות במסד נתונים.
  3. Controller: נעשה שימוש בעיקר עם יישומים אינטרנטיים או שירותי רשת REST כדי לציין שהמחלקה היא בקר קדמי, אחראית לטפל בבקשות המשתמש ולהחזיר תגובה מתאימה.

שים לב שכל האיפוסים הארבעה אלה נמצאים בחבילה org.springframework.stereotype והם חלק מחבילת spring-context. ברוב הזמן, כיתות הרכיב שלנו ייפלו תחת אחת משלושת האיפוסים המתמחים שלו, כך שאולי לא תשתמש הרבה באיפוס @Component.

דוגמת רכיב Spring

בוא ניצור יישום Maven של Spring פשוט מאוד כדי להציג את השימוש באיפוס הרכיב של Spring ואיך Spring מזהה אותו באמצעות תצורה מבוססת איפוסים וסריקת מעגל נתיבים. יש ליצור פרוייקט Maven ולהוסיף את תלות היבסיס של Spring הבאה.

<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-context</artifactId>
	<version>5.0.6.RELEASE</version>
</dependency>

זהו כל מה שאנחנו צריכים כדי לקבל את תכונות הליבה של מסגרת ה-Spring. בוא ניצור מחלקת רכיב פשוטה ונסמן אותה באיפוס @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. ניתן גם לציין את שם הרכיב ואז לקבל אותו מקשת ה-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