الخميس، 21 نوفمبر 2019

ماهو Beans and Dependency Injection في الإقلاع الربيع #spring boot

ماهو Beans and Dependency Injection في الإقلاع الربيع # spring  boot# 

ماهو Beans and Dependency Injection في الإقلاع الربيع #spring  boot 
تذكر أن spring boot  هو عبارة عن مكتبة برمجية او أخطار برمجي framework تمت برمجته من قبل شركة جافا لتوفير الجهد على المطوريين وكل ما عليهم سواء معرفة الحزم والفئات والدوال عند استدعاء المكتبة وكيفية استخدامها وهذا المصطلح لا يمكن أن نترجمه ليعطى معني ولكن تسهيلا على القاريء فلذلك له عدو ترجمات اما الإقلاع الربيع او التمهيد الربيع او حتى سبرينج بوت.
توجد مصطلحات لا يمكن ترجمتها مثل 
Beans and Dependency Injection  

فهذه المصطلح يترجم حقن التبعية والفول ههههه
ما دخل الفول في الجافا على كل حال فلنكمل المقصود بها.
في الربيع التمهيد ، يمكننا استخدام اطار الربيع لتحديد bean لدينا وحقن التبعية الخاصة بهم. يتم استخدام التعليق التوضيحي @ComponentScan للعثور علي bean والمطابقة التي تم حقنها بتعليق توضيحي @Autowired.

إذا اتبعت التخطيط النموذجي "تمهيد الربيع" ، لا تحتاج إلى تحديد إيه وسائط لتعليق توضيحي @ComponentScan. يتم تسجيل جميع ملفات فئة المكونات تلقائيا مع bean الربيعية.

يوفر المثال التالي فكره حول الربط التلقائي لقالب الكائن  الباقي وإنشاء bean لنفس الكائن  −

@Bean
public RestTemplate getRestTemplate() {
   return new RestTemplate();
}

 −تُظهر التعليمة البرمجية التالية رمزًا لكائن Template Auto wired التلقائي وكائن إنشاء Bean في ملف فئة Spring Spring Application الرئيسي
package com.ahmedalmahallawi.demo;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@SpringBootApplication
public class DemoApplication {
@Autowired
   RestTemplate restTemplate;
   
   public static void main(String[] args) {
      SpringApplication.run(DemoApplication.class, args);
   }
   @Bean
   public RestTemplate getRestTemplate() {
      return new RestTemplate();   
   }
}
 

ماهو  bean؟

في الأعلى أعطيت مثال ولكن ماهي بالضبط 
. بالمختصر هي مكتبة برمجية تقوم بعمل التسلسل serialization هي المسئول عن تحويل مثيل الفئة هو الكائن الذي يتم إنشاءه في الذاكرة إذن نريد أن نحول الكود البرمجي إلى شفرة الكترونية من تسلسلات البت. من أجل عملية نقلها عبر الشبكة او وغيرها هذا المفهوم البسيط التسلسل او السلسلة.

هناك مصطلح لجعلها تبدو خاصة.  الواقع ليس في أي مكان بالقرب من الغموض.

 في الأساس ، "bean":

 هو كائن قابل للتسلسل (أي أنه ينفذ  من خلال حزمة java.io.Serializable ويفعل ذلك بشكل صحيح)
 يحتوي على "خصائص" تعتبر أدواتها واعداداتها مجرد أساليب بأسماء معينة (مثل ، على سبيل المثال ، getFoo () هو getter لخاصية "Foo") ، و
 يحتوي على مُنشئ 0 وسيطة عام (بحيث يمكن إنشاؤه حسب الرغبة وتكوينه عن طريق تعيين خصائصه).
 تحديث:

 بالنسبة إلى Serializable: هذا ليس سوى "واجهة علامة" (واجهة لا تعلن عن أي وظائف) تخبر Java أن يوافق على تنفيذ الفصل الدراسي (ويعني أنه قادر على) "إجراء تسلسل" - عملية  تحويل مثيل إلى تدفق بايت.  يمكن تخزين هذه البايتات في ملفات ، وإرسالها عبر اتصال شبكة ، وما إلى ذلك ، ولديها معلومات كافية للسماح لـ JVM (على الأقل ، شخص يعرف بنوع الكائن) بإعادة بناء الكائن لاحقًا - ربما في حالة مختلفة من  التطبيق ، أو حتى على آلة أخرى كاملة!

 بالطبع ، من أجل القيام بذلك ، يتعين على الفئة  الالتزام ببعض القيود.  وأهمها أن جميع حقول المثال يجب أن تكون إما أنواع بدائية (int ، bool ، وما إلى ذلك) ، مثيلات لبعض الفئات القابلة للتسلسل أيضًا ، أو يتم تمييزها على أنها عابرة حتى لا يحاول Java تضمينها.  (هذا يعني بالطبع أن الحقول العابرة لن تنجو من الرحلة عبر الدفق. يجب إعداد فئة  يحتوي على حقول عابرة لإعادة تكوينها إذا لزم الأمر.)

 يجب ألا تقوم الفئة التي لا يمكنها الالتزام بهذه القيود بتنفيذ Serializable (و IIRC فإن برنامج التحويل البرمجي لـ Java لن يسمح بذلك.)

التسميات: