對于Java新手來(lái)說(shuō),Java框架也是Java學(xué)習路上的一大路障。Spring是Java開(kāi)源J2EE應用程序框架,Struts是Java開(kāi)源Web框架,Hibernate是Java開(kāi)源持久層框架。
我們先來(lái)看一下Spring的作用。Spring提供了管理業(yè)務(wù)對象的一致方法并且鼓勵了注入對接口編程而不是對類(lèi)編程的良好習慣。Spring的作用就是完全解耦類(lèi)之間的依賴(lài)關(guān)系,一個(gè)類(lèi)如果要依賴(lài)什么,那就是一個(gè)接口。至于如何實(shí)現這個(gè)接口,這都不重要了。只要拿到一個(gè)實(shí)現了這個(gè)接口的類(lèi),就可以輕松的通過(guò)xml配置文件把實(shí)現類(lèi)注射到調用接口的那個(gè)類(lèi)里。所有類(lèi)之間的這種依賴(lài)關(guān)系就完全通過(guò)配置文件的方式替代了。所以Spring框架最核心的就是所謂的依賴(lài)注射和控制反轉。
接下來(lái),我們來(lái)看一下新手如何學(xué)Spring。
針對Spring的學(xué)習,第一步就是理解IoC和AOP,這可以說(shuō)是基礎。
IoC控制反轉,對象創(chuàng )建責任的反轉。我們知道,Spring中的BeanFacotory是IoC容器的核心接口,負責實(shí)例化、定位、配置應用程序中對象及監理這些對象間的依賴(lài)。XmlBeanFacotory實(shí)現BeanFactory接口,通過(guò)獲取xml配置文件數據,組成應用對象及對象間的依賴(lài)關(guān)系。
順便說(shuō)一下,在Spring中有三種注入方式,第一種是set注入,第二種是接口注入,還有一種是構造方法注入。
AOP面向切面編程,也就是縱向的編程。在OOP面向對象的使用中,無(wú)可避免的會(huì )出現代碼重復,而且使用面向對象的編程方式,這種重復無(wú)法避免,比如用戶(hù)權限判斷中,根據相應的權限執行相應的方法;在servlet中設置編碼格式時(shí),同樣相同的代碼出現很多次,而且還根業(yè)務(wù)無(wú)關(guān),很容易忘記寫(xiě),結果運行的時(shí)候就出現亂碼拉。這種重復代碼不僅使編碼麻煩,而且還不容易維護。而AOP則將這些代碼整理起來(lái),將解決某個(gè)切面問(wèn)題的代碼單獨的放在某個(gè)模塊中,然后再織入到程序中。
Spring框架中AOP的使用步驟,第一步拷貝jar包,第二步spring配置文件中增加命名空間和約束文件,第三步寫(xiě)被代理的類(lèi)和擴展類(lèi)第四步由配置文件聲明。
弄清楚了IoC和AOP之后,要學(xué)習的是SpringMVC。想要弄清楚Spring是怎么配置的,就要學(xué)會(huì )Servlet和JSP。學(xué)習Servlet是一定不能省的,現在流行的SpringMVC和Struts2都是基于Servlet的,Servlet是MVC模型最為基本的表現形態(tài)。只有深入了解Servlet才能理解后邊的新技術(shù)。
我們在瀏覽器點(diǎn)擊鏈接和按鈕產(chǎn)生的消息不是發(fā)送給Servlet的,而是發(fā)送給web容器的。Web容器接收消息后轉交給Servlet處理。而web容器和Servlet的交流依賴(lài)于Servlet接口。Servlet是一種接口規范,所以只要我們編寫(xiě)的Java類(lèi)符合Servlet規范,那么就能被Web容器識別并被容器管理。Servlet容器通過(guò)向方法的參數賦值HttpServletRequest或者HttpServletResponse傳遞來(lái)實(shí)現請求和響應。
JSP是面向服務(wù)器的。我們在寫(xiě)JSP時(shí)預設客戶(hù)端是瀏覽器,JSP就是一個(gè)Servlet。