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