Standart bir yay web uygulaması (Roo veya "Spring MVC Project" Template tarafından oluşturulmuş) ContextLoaderListener
ve ile bir web.xml oluşturur DispatcherServlet
. Neden DispatcherServlet
tüm konfigürasyonu yüklemek için sadece kullanmıyorlar ve bunu yapmıyorlar ?
ContextLoaderListener'ın web ile ilgili olmayan şeyleri yüklemek için kullanılması gerektiğini ve DispatcherServlet'in web ile ilgili öğeleri yüklemek için kullanıldığını anlıyorum (Denetleyiciler, ...). Ve bu iki bağlamla sonuçlanır: bir ebeveyn ve bir alt bağlam.
Arka fon:
Birkaç yıldır bu standart şekilde yapıyordum.
<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>
Bu genellikle iki bağlamda ve aralarındaki bağımlılıklarda sorunlara neden oldu. Geçmişte her zaman bir çözüm bulabildim ve bunun yazılım yapısını / mimarisini her zaman daha iyi hale getirdiğine dair güçlü bir his var. Ama şimdi her iki bağlamdaki olaylarla ilgili bir sorunla karşı karşıyayım .
- Ancak bu, bu iki bağlam kalıbını yeniden düşünmeme neden oluyor ve kendime soruyorum: neden kendimi bu belaya sokayım, neden tüm yay yapılandırma dosyalarını biriyle DispatcherServlet
yükleyip ContextLoaderListener
tamamen kaldırmıyorum ? (Yine de farklı yapılandırma dosyalarına sahip olacağım, ancak yalnızca bir içeriğe sahip olacağım.)
Kaldırmamak için herhangi bir sebep var mı ContextLoaderListener
?