目錄:
1.springmvc執(zhí)行流程:
2.Spring簡單介紹:
3.orm框架:
4.常用orm框架:hibernate和mybiatis:
5.hibernate對象的狀態(tài):
6.hibernate緩存:
7.session和sessionfactory:
8.spring核心模塊:
9.hibernate核心api:
10.mybatis緩存:
11.Spring循環(huán)依賴:
12.Spring bean的生命周期:
13.Spring作用域:
14.Spring裝配bean:
15.Spring常用注解:
16.Springmvc常用注解:
17.autowire和resource區(qū)別:
18.Spring核心類:
19.javaconfig:
20.Springboot優(yōu)點:
21.自定義端口運行springboot:
22.swagger
23.什么是mybatis:
1.springmvc執(zhí)行流程:
1.發(fā)送的請求被前端控制器接收。
2.前端控制器將將請求交給handlermapping,handlermapping解析url,找到對應(yīng)的handler。
3.前端控制器再將找到的handler通過handlerdispatcher適配器,調(diào)用對應(yīng)的handler。
4.執(zhí)行完handler方法后,返回一個modelandview對象,通過適配器,返回給前端控制器。
5.前端控制器再將modelandview交給視圖解析器,解析成對應(yīng)的視圖,渲染返回給用戶。
2.Spring簡單介紹:
Spring是一個輕量級的容器框架。核心分為ioc和aop。
ioc:控制反轉(zhuǎn),主要是將創(chuàng)建對象和使用對象的權(quán)力由代碼本身,也就是new,轉(zhuǎn)交給Spring容器。核心原理是xml配置+反射。
aop:面向切面編程思想。使用動態(tài)代理實現(xiàn)。主要是負(fù)責(zé)在處理業(yè)務(wù)流程的過程中,加入相關(guān)邏輯,如日志、事務(wù)、權(quán)限判斷等。
3.orm框架:
翻譯過來就是對象關(guān)系映射,主要解決的是面向?qū)ο蠛完P(guān)系型數(shù)據(jù)庫之間互不匹配的現(xiàn)象所誕生的技術(shù)。
4.常用orm框架:hibernate和mybiatis:
相同點:底層都封裝了jdbc,都是orm框架。
不同點:hibernate可以自動生成sql,但復(fù)雜的sql則很難實現(xiàn)。
? ? ? ? ? ? ? ? mybatis將代碼和sql分離。
5.hibernate對象的狀態(tài):
1.臨時狀態(tài):剛new出來時,無id,不存在session中。
2.持久狀態(tài):有id,并加入session緩存中。
3.游離狀態(tài):有id,但沒有加入session緩存中
6.hibernate緩存:
緩存:不從數(shù)據(jù)庫中讀取數(shù)據(jù),從內(nèi)存中讀取數(shù)據(jù)。
一級緩存:默認(rèn)是開啟狀態(tài),主要是session級別的緩存,在session開啟到結(jié)束的這一過程,同一條sql查詢只會從數(shù)據(jù)查詢一次,之后都是從緩存中讀取。
二級緩存:默認(rèn)是關(guān)閉的,開啟后,主要是sessionfactory級別的緩存。也就是可以被所有session對象共享。
7.session和sessionfactory:
session是線程不安全的,所以基本每一個線程都對應(yīng)了一個session。創(chuàng)建session不會消耗太多的資源。
sessionfactory是線程安全的,sessionfactory的數(shù)據(jù)可以被所有session共享。在程序初始化時就已經(jīng)創(chuàng)建成功。
8.spring核心模塊:
aop模塊、test模塊、data數(shù)據(jù)訪問模塊,core continer核心容器模塊、web模塊、messaging模塊。
9.hibernate核心api:
1.session:參考第7條。
2.sessionfactory:參考第七條。
3.tracnsaction:事務(wù),事務(wù)的4個特性,事務(wù)的提交和回滾。
4.configuration:加載核心配置文件,將配置文件放到對象中。
10.mybatis緩存:
一級緩存:sqlsession級別的緩存,默認(rèn)是開啟的。在sqlsession范圍內(nèi),同一條sql查詢只會從數(shù)據(jù)庫查詢一次,之后都從sqlsession里面獲取數(shù)據(jù)。
二級緩存:是namespace級別的緩存,可以被多個sqlsession所共享。但二級緩存在多表關(guān)聯(lián)查詢時,非常容易出現(xiàn)臟數(shù)據(jù)。
11.Spring循環(huán)依賴:
循環(huán)依賴就是多個bean之間相互引用,形成閉環(huán)。Spring主要有構(gòu)造器循環(huán)依賴和setter方式的循環(huán)依賴。Spring無法解決構(gòu)造器的循環(huán)依賴。
Spring依靠三級緩存來解決循環(huán)依賴。
12.Spring bean的生命周期:
1.讀取xml配置文件,創(chuàng)建實例化bean對象。
2.對bean進(jìn)行依賴注入。
3.此后bean一直存在。
4.應(yīng)用銷毀,bean銷毀。
13.Spring作用域:
1.singleton:容器中只有一個單例對象。
2.prototype:每次調(diào)用實例都會創(chuàng)建一個新的實例。
3.request:每一次請求都會創(chuàng)建一個新的實例。
4.session:不同的session都會創(chuàng)建新的實例。
14.Spring裝配bean:
1.xml裝配:
? ? 優(yōu)點:xml基本包括了所有裝配的信息。
? ? 缺點:配置繁雜。
2.java代碼裝配:
? ? 需要配置一個javaconfig,里面再配置需要裝配的bean。
3.自動裝配:
? ? 主要是使用注解進(jìn)行裝配,簡單易用。分為兩步:第一步組件掃描,第二部自動裝配。
? ? 常用注解:@Component表明該類是組件類,可以被自動裝配。
? ? ? ? ? ? ? ? ? ? ? ?@autowire實現(xiàn)bean的自動裝配。
15.Spring常用注解:
? ? 1.聲明bean對象:@component,@controller,@service,@repository:Dao層
? ? 2.注入bean:@autowire,@resource
? ? 3.配置類:@configuration
? ? 4.aop: @aspect:聲明切面
? ? 5.屬性賦值: @value
16.Springmvc常用注解:
? ? 1.@requesmapping:處理請求地址映射
? ? 2.@requestparam:獲取請求的參數(shù)
? ? 3.@responsebody:返回josn數(shù)據(jù)格式
17.autowire和resource區(qū)別:
相同點:autowire和resource都可以注入bean對象。
不同點:
? ? autowire:按類的類型進(jìn)行注入。
? ? resource:按名稱注入
18.Spring核心類:
beanfactory:產(chǎn)生新的bean實例。
applicationcontext:提供了框架的實現(xiàn)。
19.javaconfig:
傳統(tǒng)的Spring都是基于xml來進(jìn)行配置的,之后可以通過javaconfig來代替xml進(jìn)行配置。
常用注解:
@configration:表面該類是配置類。
@componentscan:component類的掃描。
@bean:定義bean
@propertysource:讀取properties文件
20.Springboot優(yōu)點:
1.簡化了配置
2.內(nèi)置tomcat服務(wù)器,所以可以通過java -jar命令來運行程序。
3.使用pom文件來簡化復(fù)雜的依賴關(guān)系。
4.快速啟動項目。
21.自定義端口運行springboot:
再yml文件中,使用server.port來自定義運行端口。
22.swagger
由于前后端分離,所以后端無法與前端進(jìn)行即時的對接。
通過swagger可以自動生成后端的api。
23.什么是mybatis:
mybatis是一個半orm框架,底層封裝了jdbc,使開發(fā)者只需要關(guān)注sql本身,將程序和代碼分開。
優(yōu)點:將代碼和sql分離,相當(dāng)靈活。底層封裝jdbc,減少了冗余的代碼。
缺點:因為單獨寫sql,更換數(shù)據(jù)庫需要重寫sql,移植性差。
24.#{}和${}的區(qū)別:
#{}是預(yù)編譯,可以防止注入攻擊。
${}是字符串替換。
25.