Spring框架指的都是Springframework,它是很多模塊的集合,使用這些模塊可以很方便地協(xié)助我們進(jìn)行開發(fā)。這些模塊是:核心容器、數(shù)據(jù)訪問/集成,、Web、AOP(面向切面編程)、工具、消息和測(cè)試模塊。比如:CoreContainer中的Core組件是Spring所有組件的核心,Beans組件和Context組件是實(shí)現(xiàn)IOC和依賴注入的基礎(chǔ),AOP組件用來實(shí)現(xiàn)面向切面編程。
核心技術(shù)包括
依賴注入(DI),AOP,事件(events),資源,i18n,驗(yàn)證,數(shù)據(jù)綁定,類型轉(zhuǎn)換,SpEL。
主要模塊
SpringCore:基礎(chǔ),可以說Spring其他所有的功能都需要依賴于該類庫(kù)。主要提供IOC依賴注入功能。
SpringAspects:該模塊為與AspectJ的集成提供支持。
SpringAOP:提供了面向方面的編程實(shí)現(xiàn)。
SpringJDBC:Java數(shù)據(jù)庫(kù)連接。
SpringJMS:Java消息服務(wù)。
SpringORM:用于支持Hibernate等ORM工具。
SpringWeb:為創(chuàng)建Web應(yīng)用程序提供支持。
SpringTest:提供了對(duì)JUnit和TestNG測(cè)試的支持。
一
IoC(InverseofControl:控制反轉(zhuǎn))是一種設(shè)計(jì)思想,就是將原本在程序中手動(dòng)創(chuàng)建對(duì)象的控制權(quán),交由Spring框架來管理。IoC在其他語言中也有應(yīng)用,并非Spirng特有。IoC容器是Spring用來實(shí)現(xiàn)IoC的載體,IoC容器實(shí)際上就是個(gè)Map(key,value),Map中存放的是各種對(duì)象。
現(xiàn)在通過注解來實(shí)現(xiàn)
aop
能夠?qū)⒛切┡c業(yè)務(wù)無關(guān),卻為業(yè)務(wù)模塊所共同調(diào)用的邏輯或責(zé)任(例如事務(wù)處理、日志管理、權(quán)限控制等)封裝起來,便于減少系統(tǒng)的重復(fù)代碼,降低模塊間的耦合度,并有利于未來的可拓展性和可維護(hù)性。
bean的作用域
singleton:唯一bean實(shí)例,Spring中的bean默認(rèn)都是單例的。
prototype:每次請(qǐng)求都會(huì)創(chuàng)建一個(gè)新的bean實(shí)例。
request:每一次HTTP請(qǐng)求都會(huì)產(chǎn)生一個(gè)新的bean,該bean僅在當(dāng)前HTTPrequest內(nèi)有效。
session:每一次HTTP請(qǐng)求都會(huì)產(chǎn)生一個(gè)新的bean,該bean僅在當(dāng)前HTTPsession內(nèi)有效。
global-session:全局session作用域,僅僅在基于portlet的web應(yīng)用中才有意義,Spring5已經(jīng)沒有了。Portlet是能夠生成語義代碼(例如:HTML)片段的小型JavaWeb插件。它們基于portlet容器,可以像servlet一樣處理HTTP請(qǐng)求。但是,與servlet不同,每個(gè)portlet都有不同的會(huì)話
springmvc
SpringMVC可以幫助我們進(jìn)行更簡(jiǎn)潔的Web層的開發(fā),并且它天生與Spring框架集成。SpringMVC下我們一般把后端項(xiàng)目分為Service層(處理業(yè)務(wù))、Dao層(數(shù)據(jù)庫(kù)操作)、Entity層(實(shí)體類)、Controller層(控制層,返回?cái)?shù)據(jù)給前臺(tái)頁面)。
springmvc.工作原理
SpringMVC的入口函數(shù)也就是前端控制器DispatcherServlet的作用是接收請(qǐng)求,響應(yīng)結(jié)果。
流程說明(重要):
客戶端(瀏覽器)發(fā)送請(qǐng)求,直接請(qǐng)求到DispatcherServlet。
DispatcherServlet根據(jù)請(qǐng)求信息調(diào)用HandlerMapping,解析請(qǐng)求對(duì)應(yīng)的Handler。
解析到對(duì)應(yīng)的Handler(也就是我們平常說的Controller控制器)后,開始由HandlerAdapter適配器處理。
HandlerAdapter會(huì)根據(jù)Handler來調(diào)用真正的處理器開處理請(qǐng)求,并處理相應(yīng)的業(yè)務(wù)邏輯。
處理器處理完業(yè)務(wù)后,會(huì)返回一個(gè)ModelAndView對(duì)象,Model是返回的數(shù)據(jù)對(duì)象,View是個(gè)邏輯上的View。
ViewResolver會(huì)根據(jù)邏輯View查找實(shí)際的View。
DispaterServlet把返回的Model傳給View(視圖渲染)。
把View返回給請(qǐng)求者(瀏覽器)
spring框架用到的設(shè)計(jì)模式
工廠設(shè)計(jì)模式:Spring使用工廠模式通過BeanFactory、ApplicationContext創(chuàng)建bean對(duì)象。
代理設(shè)計(jì)模式:SpringAOP功能的實(shí)現(xiàn)。
單例設(shè)計(jì)模式:Spring中的Bean默認(rèn)都是單例的。
模板方法模式:Spring中jdbcTemplate、hibernateTemplate等以Template結(jié)尾的對(duì)數(shù)據(jù)庫(kù)操作的類,它們就使用到了模板模式。
包裝器設(shè)計(jì)模式:我們的項(xiàng)目需要連接多個(gè)數(shù)據(jù)庫(kù),而且不同的客戶在每次訪問中根據(jù)需要會(huì)去訪問不同的數(shù)據(jù)庫(kù)。這種模式讓我們可以根據(jù)客戶的需求能夠動(dòng)態(tài)切換不同的數(shù)據(jù)源。
觀察者模式:Spring事件驅(qū)動(dòng)模型就是觀察者模式很經(jīng)典的一個(gè)應(yīng)用。
適配器模式:SpringAOP的增強(qiáng)或通知(Advice)使用到了適配器模式、springMVC中也是用到了適配器模式適配Controller
component與bean區(qū)別
作用對(duì)象不同:@Component注解作用于類,而@Bean注解作用于方法。
@Component通常是通過類路徑掃描來自動(dòng)偵測(cè)以及自動(dòng)裝配到Spring容器中(我們可以使用@ComponentScan注解定義要掃描的路徑從中找出標(biāo)識(shí)了需要裝配的類自動(dòng)裝配到Spring的bean容器中)。@Bean注解通常是我們?cè)跇?biāo)有該注解的方法中定義產(chǎn)生這個(gè)bean,@Bean告訴了Spring這是某個(gè)類的示例,當(dāng)我需要用它的時(shí)候還給我。
@Bean注解比Component注解的自定義性更強(qiáng),而且很多地方我們只能通過@Bean注解來注冊(cè)bean。比如當(dāng)我們引用第三方庫(kù)中的類需要裝配到Spring容器時(shí),則只能通過@Bean來實(shí)現(xiàn)。
以上就是深圳達(dá)內(nèi)教育java學(xué)院小編針對(duì)“學(xué)習(xí)spring必學(xué)的Java基礎(chǔ)知識(shí):Spring框架”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問,請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。
零基礎(chǔ)自學(xué)java教程推薦
最新java視頻教程免費(fèi)下載(從入門到精通):http://www.bjpowernode.com/video.html
零基礎(chǔ)java自學(xué)教程:http://www.bjpowernode.com/tutorial_java_se/
相關(guān)推薦
零基礎(chǔ)學(xué)Java編程,這些內(nèi)容你一定要知道
學(xué)習(xí)Java編程了解一些免費(fèi)Java開發(fā)工具
初學(xué)者學(xué)Java編程真的很難?