อะไรคือประโยชน์ของไฟล์การกำหนดค่าหลายสปริง?
การแยกไฟล์การกำหนดค่าตามวัตถุประสงค์และฟังก์ชั่นสามารถปรับปรุงความสามารถในการอ่านและการบำรุงรักษาไฟล์การกำหนดค่าเช่นการกำหนดค่าแยกต่างหากที่มีการเปลี่ยนแปลงเล็กน้อยเช่นการจัดการธุรกรรมการกำหนดค่าและแหล่งข้อมูลและถั่วการกำหนดค่า
สปริงอ่านไฟล์การกำหนดค่า: หลายวิธี:
1. อ่านโดยใช้เมธอด ApplicationContext โดย Spring เอง
ในโปรแกรม Java คุณสามารถใช้ ApplicationContext สองคลาสการใช้งาน ClassPathxMlapplicationContext และ filesystemxmlapplicationContext เพื่ออ่านไฟล์การกำหนดค่าหลายไฟล์และตัวสร้างของพวกเขาสามารถรับอาร์เรย์ของไฟล์การกำหนดค่า
ตัวอย่างเช่น: ApplicationContext CTX = ใหม่ classPathxMlApplicationContext (configLocations); คล้ายกับวิธีการสร้าง ApplicationContext โดยใช้ filesystemxmlapplicationContext ความแตกต่างเพียงอย่างเดียวคือพา ธ ของไฟล์การกำหนดค่าการค้นหาสองไฟล์แตกต่างกัน: classPathxMlApplicationContext การค้นหาไฟล์การกำหนดค่าผ่านเส้นทาง classpath: filesystemxmlapplicationcontext
วิธีที่ 1: บันทึกวัตถุ ApplicationContext ระหว่างการเริ่มต้น
รหัส:
ApplicationContext ac = ใหม่ filesystemxmlapplicationContext ("ApplicationContext.xml"); ac.getBean ("beanid"); ภาพประกอบ:
วิธีนี้เหมาะสำหรับแอปพลิเคชันแบบสแตนด์อโลนโดยใช้ Framework Spring ซึ่งโปรแกรมต้องการให้ฤดูใบไม้ผลิเริ่มต้นด้วยตนเองผ่านไฟล์การกำหนดค่า
วิธีที่ 2: รับวัตถุ ApplicationContext ผ่านคลาสเครื่องมือที่จัดทำโดยฤดูใบไม้ผลิ
รหัส:
นำเข้า org.springframework.web.context.support.webapplicationContextUtils; ApplicationContext AC1 = WebApplicationContextUtils.getRequiredWebapplicationContext (ServletContext SC) ApplicationContext AC2 = WebApplicationContextUtils.getWebapplicationContext (ServletContext SC) AC1.GetBean ("beanid"); ac2.getBean ("beanid"); ภาพประกอบ:
วิธีนี้เหมาะสำหรับระบบ B/S โดยใช้ Framework Spring โดยได้รับวัตถุ ApplicationContext ผ่านวัตถุ ServletContext จากนั้นรับอินสแตนซ์คลาสที่ต้องการผ่าน
ความแตกต่างระหว่างวิธีการเครื่องมือสองวิธีข้างต้นคืออดีตโยนข้อยกเว้นเมื่อการได้มาล้มเหลวและหลังส่งคืนค่า NULL
วิธีที่ 3: สืบทอดมาจาก ApplicationObjectSupport
ภาพประกอบ:
แอปพลิเคชันคลาสนามธรรม ApplicationObjectSupport ให้วิธี getApplicationContext () ซึ่งสามารถรับ ApplicationContext ได้อย่างง่ายดาย เมื่อฤดูใบไม้ผลิเริ่มต้นวัตถุ ApplicationContext จะถูกฉีดผ่านเมธอด SetApplicationContext (ApplicationContext บริบท) ของคลาสนามธรรม
วิธีที่ 4: สืบทอดมาจากคลาสนามธรรม WebApplicationObjectSupport
ภาพประกอบ:
คล้ายกับวิธีการข้างต้นโทร getWebapplicationContext () เพื่อรับ webApplicationContext
วิธีที่ 5: ใช้อินเทอร์เฟซ ApplicationContextaware
ภาพประกอบ:
ใช้วิธีการ setApplicationContext (applicationcontext context) ของอินเทอร์เฟซนี้และบันทึกวัตถุ ApplicationContext เมื่อสปริงเริ่มต้นวัตถุ ApplicationContext จะถูกฉีดผ่านวิธีนี้
วิธีการข้างต้นเหมาะสำหรับสถานการณ์ที่แตกต่างกันโปรดเลือกวิธีการที่สอดคล้องกันตามสถานการณ์เฉพาะ
2. กำลังโหลดเมื่อใช้การเริ่มต้นโครงการเว็บ
ไฟล์การกำหนดค่าใดที่โหลดโดยอัตโนมัติใน web.xml:
<context-param> <param-name> contextconfiglocation </param-name> <param-value>/web-inf/spring/spring-core.xml </param-value> </context-param> <servlet> <servlet-name> springmvc </servlet-name> <servlet-class> org.springframework.web.servlet.dispatcherservlet </servlet-class> <int-param> inf/spring/spring-servlet.xml </param-value> </init-param> <load-on-startup> 1 </load-on-startup> </servlet> <servlet-mapping>
เมื่อมีหลายตัวเลขคุณสามารถใช้ * เพื่อแทนที่ได้
<servlet> <servlet-name> แอป </servlet-name> <servlet-lass> org.springframework.web.servlet.dispatcherservlet </servlet-class> <param-value> /web-inf/applicationContext*.xml,/web-inf/user_spring.xml </param-value> </context-param> <load-on-startup> 1 </load-on-startup>
3. นำเข้าไฟล์การกำหนดค่าอื่น ๆ ลงในไฟล์การกำหนดค่า XML
กำหนดค่าบริการแอปพลิเคชันเพื่อโหลดใน /web-inf/applicationContext.xml คุณสามารถใช้การนำเข้าเพื่อนำเข้าไฟล์การกำหนดค่าอื่น ๆ ใน ApplicationContext.xml
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: context = "http://www.springframework xmlns: p = "http://www.springframework.org/schema/p" xmlns: mvc = "http://www.springframework.org/schema/mvc" xmlns: tx = "http://www.springframework.org/schema/tx" xmlns: aop = "http://www.springframework.org/schema/aop" 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.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/mvc http://www.springframework.org/schema/MVC/SPRING-MVC-3.2.XSD http://www.springframework.org/schema/tx/spring-tx-3.2.xsd http://www.springframework.org/schema/aop http://ww.springframework Resource = "spring-servlet.xml"/> <import Resource = "Spring-security.xml"/> <import Resource = "Spring-hibernate.xml"/> <import Resource = "Spring-redis.xml"/> <import Resource = "Spring-redis.xml"/> <beans>