spring框架學習方法介紹
spring框架學習方法介紹
Spring框架是由于軟件開發(fā)的復雜性而創(chuàng)建的。Spring使用的是基本的JavaBean來完成以前只可能由EJB完成的事情。下面跟著學習啦小編一起來看看spring框架學習方法。
spring框架學習方法
針對Spring的學習,第一步就是理解IoC和AOP,這可以說是基礎。
IoC控制反轉(zhuǎn),對象創(chuàng)建責任的反轉(zhuǎn)。我們知道,Spring中的BeanFacotory是IoC容器的核心接口,負責實例化、定位、配置應用程序中對象及監(jiān)理這些對象間的依賴。XmlBeanFacotory實現(xiàn)BeanFactory接口,通過獲取xml配置文件數(shù)據(jù),組成應用對象及對象間的依賴關系。
順便說一下,在Spring中有三種注入方式,第一種是set注入,第二種是接口注入,還有一種是構造方法注入。
AOP面向切面編程,也就是縱向的編程。在OOP面向?qū)ο蟮氖褂弥?,無可避免的會出現(xiàn)代碼重復,而且使用面向?qū)ο蟮木幊谭绞?,這種重復無法避免,比如用戶權限判斷中,根據(jù)相應的權限執(zhí)行相應的方法;在servlet中設置編碼格式時,同樣相同的代碼出現(xiàn)很多次,而且還根業(yè)務無關,很容易忘記寫,結(jié)果運行的時候就出現(xiàn)亂碼拉。這種重復代碼不僅使編碼麻煩,而且還不容易維護。而AOP則將這些代碼整理起來,將解決某個切面問題的代碼單獨的放在某個模塊中,然后再織入到程序中。
Spring框架中AOP的使用步驟,第一步拷貝jar包,第二步spring配置文件中增加命名空間和約束文件,第三步寫被代理的類和擴展類第四步由配置文件聲明。
弄清楚了IoC和AOP之后,要學習的是SpringMVC。想要弄清楚Spring是怎么配置的,就要學會Servlet和JSP。學習Servlet是一定不能省的,現(xiàn)在流行的SpringMVC和Struts2都是基于Servlet的,Servlet是MVC模型最為基本的表現(xiàn)形態(tài)。只有深入了解Servlet才能理解后邊的新技術。
我們在瀏覽器點擊鏈接和按鈕產(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)請求和響應。
JSP是面向服務器的。我們在寫JSP時預設客戶端是瀏覽器,JSP就是一個Servlet。
Spring框架
1.什么是spring框架
spring是J2EE應用程序框架,是輕量級的IoC和AOP的容器框架,主要是針對javaBean的生命周期進行管理的輕量級容器,可以單獨使用,也可以和Struts框架,ibatis框架等組合使用。
2.架構概述
1)IoC(Inversion of Control)控制反轉(zhuǎn),對象創(chuàng)建責任的反轉(zhuǎn),在spring中BeanFacotory是IoC容器的核心接口,負責實例化,定位,配置應用程序中的對象及建立這些對象間的依賴。XmlBeanFacotory實現(xiàn)BeanFactory接口,通過獲取xml配置文件數(shù)據(jù),組成應用對象及對象間的依賴關系。
spring中有三種注入方式,一種是set注入,一種是接口注入,另一種是構造方法注入。
2)AOP面向切面編程
aop就是縱向的編程,如下圖所示,業(yè)務1和業(yè)務2都需要一個共同的操作,與其往每個業(yè)務中都添加同樣的代碼,不如寫一遍代碼,讓兩個業(yè)務共同使用這段代碼。
spring中面向切面變成的實現(xiàn)有兩種方式,一種是動態(tài)代理,一種是CGLIB,動態(tài)代理必須要提供接口,而CGLIB實現(xiàn)是有繼承。
使用spring框架的理由
在不使用spring框架之前,我們的service層中要使用dao層的對象,不得不在service層中new一個對象。如下:
//dao層對象
public class UserDao{
publicvoid insert(User user){}
}
//service層對象
public classUserService{
publicvoid insert(User user){
UserDaouserdao = new UserDao();
userdao.insert(user);
}
}
存在的問題:層與層之間的依賴。
使用框架后:
//dao層對象
public class UserDao{
publicvoid insert(User user){}
}
//service層對象
public classUserService{
privateUserDao userdao;
publicUserDao getUserdao() {
returnuserdao;
}
publicvoid setUserdao(UserDao userdao) {
this.userdao= userdao;
}
publicvoid insert(User user){
userdao.insert(user);
}
}
service層要用dao層對象需要配置到xml配置文件中,至于對象是怎么創(chuàng)建的,關系是怎么組合的都交給了spring框架去實現(xiàn)。
框架優(yōu)點
輕量級的容器框架沒有侵入性
使用IoC容器更加容易組合對象直接間關系,面向接口編程,降低耦合
Aop可以更加容易的進行功能擴展,遵循ocp開發(fā)原則
創(chuàng)建對象默認是單例的,不需要再使用單例模式進行處理
缺點:業(yè)務功能依賴spring特有的功能,依賴與spring環(huán)境。