ฤดูใบไม้ผลิ - คำจำกัดความของถั่ว
เรียกว่าอ็อบเจ็กต์ที่เป็นกระดูกสันหลังของแอ็พพลิเคชันของคุณและถูกจัดการโดยคอนเทนเนอร์ 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 พร้อมคำอธิบายประกอบ