ฤดูใบไม้ผลิ - คำจำกัดความของถั่ว

เรียกว่าอ็อบเจ็กต์ที่เป็นกระดูกสันหลังของแอ็พพลิเคชันของคุณและถูกจัดการโดยคอนเทนเนอร์ Spring IoC beans. ถั่วเป็นวัตถุที่สร้างอินสแตนซ์ประกอบและจัดการโดยคอนเทนเนอร์ Spring IoC ถั่วเหล่านี้สร้างขึ้นด้วยข้อมูลเมตาของการกำหนดค่าที่คุณจัดหาให้กับคอนเทนเนอร์ ตัวอย่างเช่นในรูปแบบของนิยาม XML <bean /> ซึ่งคุณได้เห็นไปแล้วในบทก่อนหน้านี้

คำจำกัดความของถั่วมีข้อมูลที่เรียกว่า configuration metadataซึ่งจำเป็นเพื่อให้คอนเทนเนอร์ทราบสิ่งต่อไปนี้ -

  • วิธีการสร้างถั่ว
  • รายละเอียดวงจรชีวิตของ Bean
  • การพึ่งพาของถั่ว

ข้อมูลเมตาของคอนฟิกูเรชันข้างต้นทั้งหมดแปลเป็นชุดของคุณสมบัติต่อไปนี้ที่ประกอบกันเป็นคำนิยาม bean แต่ละตัว

ซีเนียร์ คุณสมบัติและคำอธิบาย
1

class

แอ็ตทริบิวต์นี้จำเป็นและระบุคลาส bean ที่จะใช้ในการสร้าง bean

2

name

แอ็ตทริบิวต์นี้ระบุตัวระบุ bean โดยไม่ซ้ำกัน ในข้อมูลเมตาของคอนฟิกูเรชัน XMLbased คุณใช้แอตทริบิวต์ id และ / หรือ name เพื่อระบุตัวระบุ bean

3

scope

แอ็ตทริบิวต์นี้ระบุขอบเขตของอ็อบเจ็กต์ที่สร้างจากนิยามบีนโดยเฉพาะและจะกล่าวถึงในบทบีนสโคป

4

constructor-arg

สิ่งนี้ใช้เพื่อฉีดการอ้างอิงและจะกล่าวถึงในบทต่อ ๆ ไป

5

properties

สิ่งนี้ใช้เพื่อฉีดการอ้างอิงและจะกล่าวถึงในบทต่อ ๆ ไป

6

autowiring mode

สิ่งนี้ใช้เพื่อฉีดการอ้างอิงและจะกล่าวถึงในบทต่อ ๆ ไป

7

lazy-initialization mode

lazy-initialized bean บอกให้คอนเทนเนอร์ IoC สร้างอินสแตนซ์ bean เมื่อถูกร้องขอครั้งแรกแทนที่จะเป็นตอนเริ่มต้น

8

initialization method

การเรียกกลับที่จะเรียกหลังจากที่คอนเทนเนอร์กำหนดคุณสมบัติที่จำเป็นทั้งหมดบนถั่วแล้ว จะกล่าวถึงในบทวงจรชีวิตของถั่ว

9

destruction method

การเรียกกลับที่จะใช้เมื่อภาชนะที่มีถั่วถูกทำลาย จะกล่าวถึงในบทวงจรชีวิตของถั่ว

ข้อมูลเมตาการกำหนดค่า Spring

คอนเทนเนอร์ Spring IoC แยกออกจากรูปแบบที่เขียนข้อมูลเมตาการกำหนดค่านี้โดยสิ้นเชิง ต่อไปนี้เป็นวิธีการสำคัญสามวิธีในการจัดเตรียมข้อมูลเมตาของการกำหนดค่าให้กับ Spring Container -

  • ไฟล์คอนฟิกูเรชันตาม XML
  • การกำหนดค่าตามคำอธิบายประกอบ
  • การกำหนดค่าบน Java

คุณได้เห็นแล้วว่ามีการจัดเตรียมข้อมูลเมตาของการกำหนดค่าตาม XML ให้กับคอนเทนเนอร์อย่างไร แต่ขอให้เราดูตัวอย่างไฟล์คอนฟิกูเรชันแบบ XML อื่นที่มีคำจำกัดความ bean ที่แตกต่างกันรวมถึงการกำหนดค่าเริ่มต้นแบบ lazy วิธีการเริ่มต้นและวิธีการทำลาย -

<?xml version = "1.0" encoding = "UTF-8"?>

<beans xmlns = "http://www.springframework.org/schema/beans"
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation = "http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

   <!-- A simple bean definition -->
   <bean id = "..." class = "...">
      <!-- collaborators and configuration for this bean go here -->
   </bean>

   <!-- A bean definition with lazy init set on -->
   <bean id = "..." class = "..." lazy-init = "true">
      <!-- collaborators and configuration for this bean go here -->
   </bean>

   <!-- A bean definition with initialization method -->
   <bean id = "..." class = "..." init-method = "...">
      <!-- collaborators and configuration for this bean go here -->
   </bean>

   <!-- A bean definition with destruction method -->
   <bean id = "..." class = "..." destroy-method = "...">
      <!-- collaborators and configuration for this bean go here -->
   </bean>

   <!-- more bean definitions go here -->
   
</beans>

คุณสามารถตรวจสอบตัวอย่าง Spring Hello Worldเพื่อทำความเข้าใจวิธีกำหนดกำหนดค่าและสร้าง Spring Beans

เราจะพูดคุยเกี่ยวกับ Annotation Based Configuration ในบทที่แยกต่างหาก มีการกล่าวถึงโดยเจตนาในบทที่แยกต่างหากเนื่องจากเราต้องการให้คุณเข้าใจแนวคิดเกี่ยวกับ Spring ที่สำคัญอื่น ๆ ก่อนที่คุณจะเริ่มเขียนโปรแกรมด้วย Spring Dependency Injection พร้อมคำอธิบายประกอบ