spring學習筆記:spring mvc不得不說的幾處配置
阿新 • • 發佈:2019-01-24
通常情況下會有這麼幾個配置檔案:web.xml, applicationContext.xml, xxxx-servlet.xml,
在web.xml中通常會這麼配置DispatcherServlet:
這個servlet預設會以<servlet-name>-servlet.xml為當前servlet的spring容器的配置檔案,比如本例應該是mvc-servlet.xml,但是如果你不想這麼命名,則要給這個servlet新增啟動引數contextConfigLocation, 像上面被註釋掉的一樣。
web.xml中通常還有這樣的配置:
context-param是global引數,會被整個應用程式共享;spring mvc中配置的ContextLoaderListener正是通過讀取contextConfigLocation這個全域性引數,找到全域性的spring容器配置檔案。然後構建全域性的WebApplicationContext,具體的過程由ContextLoader來操作,ContextLoader中initWebApplicationContext方法非常清晰地描述了這個過程. 這個全域性的WebApplicationContext可以被所有的DispatcherServlet的spring容器訪問,因為所有DispatcherServlet的spring容器都把這個全域性的容器作為parent.這個過程描述在FrameworkServlet中; 不清楚的可以看一下原始碼。這樣的父子容器的設計非常有好處:
業務層, 持久層的bean放在父容器中, 這樣可以被所有展現層共享;配置檔案也可以拆分得更清晰:XXXDao.xml, XXXService.xml .....
展現層的bean放在各自servlet的spring容器中。
讀了好多次程式碼,才總算把這個問題搞清楚了。