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