Spring MVC 零配置
阿新 • • 發佈:2017-05-22
只有一個 col 純粹 相同 如果 http 註冊 name 指定
1. pring MVC的核心就是DispatcherServlet類,Spring MVC處理請求的流程如下圖所示:
2. Spring MVC中典型的上下文層次
當我們初始化一個DispatcherServlet類時,Spring MVC會在web應用的WEB-INF目錄下查找一個名字叫:[servlet-name]-servlet.xml的配置文件,查詢這個文件中定義的bean並初始化。[servlet-name]-servlet.xml的定義的bean初始化時將會覆蓋在全局範圍內(global scope)定義的相同名稱的bean。我們一般會在web.xml中定義DispatcherServlet。由上圖我們可以看出Controller、HandlerMapping、ViewResovler類在Servlet WebApplicationContext中定義,而Services類,Repositories類(中間服務、數據源等)在Root WebApplicationContext中定義。
3. Spring MVC中單個的根上下文(Single Root Contexct)
如果只有一個單一個根上下文,這樣我們就可以定義一個空的contextConfigLocation,因此所有的beans就要在這這個單一的Root Context中定義了。
4. 如何不再要web.xm和[servlet-name].servlet.xml而采用純粹的java類來實現?
從上圖中我們可以看出只要繼承了AbstractAnnotationConfigDispatcherServletInitializer類即可實現在Servlet容器中註冊Servlet WebApplicationContext和Root WebApplicationContext。
4.1.將 DispatcherServlet 配置在 Servlet 容器中而不再使用 web.xml 。
public class RtpFrontWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { /** * 指定 Root WebApplicationContext 類,[email protected],從而代替XML配置文件 */ @Override protected Class<?>[] getRootConfigClasses() {return new Class<?>[]{RootConfig.class}; } /** * 指定 Servlet WebApplicationContext 類,[email protected],從而代替XML配置文件 */ @Override protected Class<?>[] getServletConfigClasses() { return new Class<?>[]{WebConfig.class}; } /** * 指定 Servlet mappings */ @Override protected String[] getServletMappings() { return new String[]{"/"}; } }
Spring MVC 零配置