我們知道,Spring的配置分為兩個部分,
一部分是配置Spring容器,一般配置在applicationContext.xml。
另一部分是Web容器,也叫Web子容器,一般配置在xxx-servlet.xml。
是以,遵循配置分離的原則,我們提供兩個類來分别代替這兩個XML檔案。
我們首先提供一個SpringContextConfig類,這個類用于配置原本配置在applicationContext.xml中的資訊。由于我們已經将資料源和事務管理器的配置單獨配置到了DBConfig,對于最基本配置這個範圍而言,這個類暫時沒有其他的東西需要配置。當然以後我們自定義的一些需要Spring管理的内容可以在這裡配置。比如我在這裡面配置了一個RPC工具,源碼如下:
我們接着提供一個WebContextConfig類,這個類用于配置原本配置在xxx-servlet.xml中的資訊。我們需要繼承org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter這個抽象類,
通過重寫其void addResourceHandlers(ResourceHandlerRegistry registry)方法實作靜态資源過濾,
重寫void addInterceptors(InterceptorRegistry registry)方法來配置我們的監聽器。
我們先給出源碼,再對源碼作出解釋:
我們首先配置了靜态資源所在位置和請求路徑,以避免靜态資源被攔截成請求。
重寫的void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer)方法是為了開啟預設處理靜态資源的Servlet。
然後我們配置了JSP和FreeMarker兩種視圖解析器,通過設定order屬性來配置其優先級,當找不到優先級高的視圖時會自動搜尋下一優先級的視圖。
最後就是最重要的消息轉換器的配置了。
我們知道,Spring是預設注冊了這幾個消息轉換器的,那為什麼我們還需要配置一次呢?
衆所周知,Java8以前的時間API是設計的很喪心病狂的,我們通常需要花費大量的精力去處理時間格式。
而Spring預設配置的Json消息轉換器的日期格式并不是我們需要的"yyyy-MM-dd HH:mm:ss"格式,是以為了統一我們在JSON傳回時間時格式統一,我們在采用的Json轉換工具Jackson的配置中設定了固定的日期格式,是以我們需要将Json消息轉換器重新配置。
如果您清楚Java對于無參構造器的預設提供政策了解的話,相信您就能明白我們為什麼需要重新配置這些消息轉換器了。對于Jackson工具的封裝源碼如下:
至此,我們對于Spring的所有基本配置就都完成了,我們徹底抛棄了XML配置檔案,隻需要使用繼承就可以獲得這些配置并應用于我們的項目中。在下一篇博文中,我們将講解怎麼在我們項目中使用這些配置,并怎麼使用Java類代替web.xml檔案。
http://my.oschina.net/devleon/blog/530902