spring框架學(xué)習(xí)方法介紹
spring框架學(xué)習(xí)方法介紹
Spring框架是由于軟件開發(fā)的復(fù)雜性而創(chuàng)建的。Spring使用的是基本的JavaBean來完成以前只可能由EJB完成的事情。下面跟著學(xué)習(xí)啦小編一起來看看spring框架學(xué)習(xí)方法。
spring框架學(xué)習(xí)方法
針對Spring的學(xué)習(xí),第一步就是理解IoC和AOP,這可以說是基礎(chǔ)。
IoC控制反轉(zhuǎn),對象創(chuàng)建責(zé)任的反轉(zhuǎn)。我們知道,Spring中的BeanFacotory是IoC容器的核心接口,負(fù)責(zé)實(shí)例化、定位、配置應(yīng)用程序中對象及監(jiān)理這些對象間的依賴。XmlBeanFacotory實(shí)現(xiàn)BeanFactory接口,通過獲取xml配置文件數(shù)據(jù),組成應(yīng)用對象及對象間的依賴關(guān)系。
順便說一下,在Spring中有三種注入方式,第一種是set注入,第二種是接口注入,還有一種是構(gòu)造方法注入。
AOP面向切面編程,也就是縱向的編程。在OOP面向?qū)ο蟮氖褂弥校瑹o可避免的會出現(xiàn)代碼重復(fù),而且使用面向?qū)ο蟮木幊谭绞剑@種重復(fù)無法避免,比如用戶權(quán)限判斷中,根據(jù)相應(yīng)的權(quán)限執(zhí)行相應(yīng)的方法;在servlet中設(shè)置編碼格式時,同樣相同的代碼出現(xiàn)很多次,而且還根業(yè)務(wù)無關(guān),很容易忘記寫,結(jié)果運(yùn)行的時候就出現(xiàn)亂碼拉。這種重復(fù)代碼不僅使編碼麻煩,而且還不容易維護(hù)。而AOP則將這些代碼整理起來,將解決某個切面問題的代碼單獨(dú)的放在某個模塊中,然后再織入到程序中。
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ù)。
我們在瀏覽器點(diǎn)擊鏈接和按鈕產(chǎn)生的消息不是發(fā)送給Servlet的,而是發(fā)送給web容器的。Web容器接收消息后轉(zhuǎn)交給Servlet處理。而web容器和Servlet的交流依賴于Servlet接口。Servlet是一種接口規(guī)范,所以只要我們編寫的Java類符合Servlet規(guī)范,那么就能被Web容器識別并被容器管理。Servlet容器通過向方法的參數(shù)賦值HttpServletRequest或者HttpServletResponse傳遞來實(shí)現(xiàn)請求和響應(yīng)。
JSP是面向服務(wù)器的。我們在寫JSP時預(yù)設(shè)客戶端是瀏覽器,JSP就是一個Servlet。
Spring框架
1.什么是spring框架
spring是J2EE應(yīng)用程序框架,是輕量級的IoC和AOP的容器框架,主要是針對javaBean的生命周期進(jìn)行管理的輕量級容器,可以單獨(dú)使用,也可以和Struts框架,ibatis框架等組合使用。
2.架構(gòu)概述
1)IoC(Inversion of Control)控制反轉(zhuǎn),對象創(chuàng)建責(zé)任的反轉(zhuǎn),在spring中BeanFacotory是IoC容器的核心接口,負(fù)責(zé)實(shí)例化,定位,配置應(yīng)用程序中的對象及建立這些對象間的依賴。XmlBeanFacotory實(shí)現(xiàn)BeanFactory接口,通過獲取xml配置文件數(shù)據(jù),組成應(yīng)用對象及對象間的依賴關(guān)系。
spring中有三種注入方式,一種是set注入,一種是接口注入,另一種是構(gòu)造方法注入。
2)AOP面向切面編程
aop就是縱向的編程,如下圖所示,業(yè)務(wù)1和業(yè)務(wù)2都需要一個共同的操作,與其往每個業(yè)務(wù)中都添加同樣的代碼,不如寫一遍代碼,讓兩個業(yè)務(wù)共同使用這段代碼。
spring中面向切面變成的實(shí)現(xiàn)有兩種方式,一種是動態(tài)代理,一種是CGLIB,動態(tài)代理必須要提供接口,而CGLIB實(shí)現(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)建的,關(guān)系是怎么組合的都交給了spring框架去實(shí)現(xiàn)。
框架優(yōu)點(diǎn)
輕量級的容器框架沒有侵入性
使用IoC容器更加容易組合對象直接間關(guān)系,面向接口編程,降低耦合
Aop可以更加容易的進(jìn)行功能擴(kuò)展,遵循ocp開發(fā)原則
創(chuàng)建對象默認(rèn)是單例的,不需要再使用單例模式進(jìn)行處理
缺點(diǎn):業(yè)務(wù)功能依賴spring特有的功能,依賴與spring環(huán)境。