แอพลิเคชันเว็บฤดูใบไม้ผลิมาตรฐาน (สร้างโดยกินตานาโรหรือ "ฤดูใบไม้ผลิ MVC โครงการ" แม่แบบ) สร้าง web.xml ด้วยและContextLoaderListener
ทำไมพวกเขาไม่เพียงใช้และทำให้มันโหลดการกำหนดค่าที่สมบูรณ์?DispatcherServlet
DispatcherServlet
ฉันเข้าใจว่าควรใช้ ContextLoaderListener เพื่อโหลดสิ่งที่ไม่เกี่ยวข้องกับเว็บและใช้ DispatcherServlet เพื่อโหลดสิ่งที่เกี่ยวข้องกับเว็บ (Controllers, ... ) และส่งผลให้เกิดสองบริบท: บริบทผู้ปกครองและบริบทย่อย
พื้นหลัง:
ฉันทำแบบนี้มาหลายปีแล้ว
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:META-INF/spring/applicationContext*.xml</param-value>
</context-param>
<!-- Creates the Spring Container shared by all Servlets and Filters -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- Handles Spring requests -->
<servlet>
<servlet-name>roo</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/spring/webmvc-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
สิ่งนี้มักก่อให้เกิดปัญหากับทั้งสองบริบทและการพึ่งพาระหว่างกัน ที่ผ่านมาฉันสามารถหาทางแก้ไขได้เสมอและฉันมีความรู้สึกหนักแน่นว่าสิ่งนี้ทำให้โครงสร้างซอฟต์แวร์ / สถาปัตยกรรมดีขึ้นเสมอ แต่ตอนนี้ฉันกำลังเผชิญปัญหากับเหตุการณ์ที่เกิดขึ้นทั้งในบริบท
- อย่างไรก็ตามสิ่งนี้ทำให้ฉันคิดทบทวนรูปแบบบริบททั้งสองนี้ใหม่และฉันก็ถามตัวเองว่า: ทำไมฉันต้องพาตัวเองไปสู่ปัญหานี้ทำไมไม่โหลดไฟล์คอนฟิกูเรชันสปริงทั้งหมดด้วยไฟล์เดียวDispatcherServlet
และลบไฟล์ContextLoaderListener
. (ฉันจะยังคงมีไฟล์การกำหนดค่าที่แตกต่างกัน แต่มีเพียงบริบทเดียว)
มีเหตุผลใดที่จะไม่นำออกContextLoaderListener
?