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