后端開發(fā)基礎(chǔ)概念
目前處于項(xiàng)目上手階段,在學(xué)習(xí)項(xiàng)目過程中,有一些一知半解或者不明白含義的專業(yè)名詞或者縮寫,在此匯總。里面的內(nèi)容很多都是基于個人理解,水平有限如果有出錯的地方還請各位大佬批評指正。
2023年8月31日00:34:22,已經(jīng)比較晚了,后續(xù)的內(nèi)容之后再補(bǔ)充吧,一口吃不了個胖子。
常見縮寫總結(jié)
- PO:Persistent Object,持久層對象,用于映射數(shù)據(jù)庫中的Java類。通常用于表示數(shù)據(jù)庫中一條記錄的Java對象,通常具有與數(shù)據(jù)庫中表相同的字段和數(shù)據(jù)類型。常常作為DAO(數(shù)據(jù)訪問對象)層的數(shù)據(jù)模型,以及和數(shù)據(jù)庫交互的對象。PO對象中的屬性與數(shù)據(jù)庫表中的列相互的對應(yīng),每一行數(shù)據(jù)庫表數(shù)據(jù)對應(yīng)一個PO對象,PO對象中的字段值就是對應(yīng)的列值。
-
- 不應(yīng)該包括任何對數(shù)據(jù)庫的操作。
- VO:Value Object,值對象,主要負(fù)責(zé)業(yè)務(wù)之間的值傳遞。VO通常表示程序中的某個值或者一組值,例如用戶的姓名、年齡、地址等。VO通常用于在不同層之間傳遞數(shù)據(jù),例如在Controller層和Service層之間傳遞數(shù)據(jù)。VO對象通常是PO對象中提取出來的一部分?jǐn)?shù)據(jù),用于與前端或其它層之間的展示和傳遞。
- DO:Domain Object,領(lǐng)域?qū)訉ο螅褪菑默F(xiàn)實(shí)世界中抽象出來的有形或者無形的業(yè)務(wù)實(shí)體。通??梢源娌糠諴O的職責(zé)。
- DAO:Data Access Object,數(shù)據(jù)訪問對象,負(fù)責(zé)與數(shù)據(jù)庫的交互。DAO是整個程序中與數(shù)據(jù)庫交互的核心部分。DAO負(fù)責(zé)將數(shù)據(jù)庫中的數(shù)據(jù)轉(zhuǎn)換為Java對象,并將Java對象的數(shù)據(jù)保存至數(shù)據(jù)庫中。DAO的主要作用是隔離上層業(yè)務(wù)邏輯和下層數(shù)據(jù)訪問的細(xì)節(jié)。在Java開發(fā)中,通常使用Hibernate等ORM框架來實(shí)現(xiàn)DAO層。DAO的主要任務(wù)就是實(shí)現(xiàn)數(shù)據(jù)庫的增刪改查等基本操作,同時提供一些高級查詢功能。
關(guān)于DAO與PO的區(qū)別:
DAO層主要提供的是訪問底層數(shù)據(jù)源的方法,這些方法可以被Service層調(diào)用;PO主要是純對象本身,不涉及具體的增刪改查操作。
- API:Application Programming Interface,應(yīng)用程序接口。為應(yīng)用外部提供功能支持。
- APP:Application,
- MVC:
- DDD:
- AOP:Aspect Oriented Programming,面向切面編程。將相同的事情統(tǒng)一攔截到一處進(jìn)行處理,是AOP的一種實(shí)現(xiàn)思想。通過預(yù)編譯的方式和運(yùn)行期間動態(tài)代理實(shí)現(xiàn)程序功能的同一維護(hù)的一種技術(shù)。
常見技術(shù)簡明介紹
- Redis:Remote Dictionary Server,遠(yuǎn)程字典服務(wù)。redis是一個key-value存儲系統(tǒng),支持push/pop,add/remove以及取其交集并集和差集以及更豐富的操作。是高性能的key-value數(shù)據(jù)庫。我的理解就是面向企業(yè)級開發(fā)的HashMap,主要面向數(shù)據(jù)庫數(shù)據(jù)的存取/查找。
為什么快?
:
完全基于內(nèi)存操作;
C語言實(shí)現(xiàn),優(yōu)化過的數(shù)據(jù)結(jié)構(gòu),基于集中基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu),redis做了大量的優(yōu)化,性能極高;
使用單線程,無上下文切換成本;
基于非阻塞的IO多路復(fù)用機(jī)制。
- Spring:一個開源的J2EE應(yīng)用程序框架,
- SpringMVC:
- SpringBoot:
- MyBatis:一款優(yōu)秀的持久層開源框架,其讓開發(fā)者可以專注于SQL語句本身,而不再過多的關(guān)注類似于比較原始的servlet+jsp對應(yīng)的JDBC中涉及到的數(shù)據(jù)庫的鏈接以及關(guān)閉等細(xì)節(jié)操作,簡化開發(fā)流程,提高了后端開發(fā)的工作效率。
MyBatis通過xml或注解的方式將要執(zhí)行的各種statement(statement、preparedStatement)配置起來,通過Java對象和statement中的sql進(jìn)行映射生成最終執(zhí)行的sql語句,最后由MyBatis框架執(zhí)行sql并將結(jié)果映射到Java對象并返回。
- SpringIoC:Inverse of Control,控制反轉(zhuǎn)。
- AOP:Aspect Oriented Programming,面向切面編程。
- RabbitMQ:一種消息隊列,可以處理點(diǎn)對點(diǎn)消息隊列和發(fā)布/訂閱模式的消息隊列;
- Kafka:
- Dubbo:Alibaba開發(fā)的開源服務(wù)管理框架,支持豐富的服務(wù)治理能力。依然很抽象,如何使用?
- MQ:
- MySQL:
- XDB-Router:
- ES:
- ZK:
框架簡介
Spring
Spring是一款開源的輕量級Java開發(fā)框架。一般說的Spring框架,是由多模塊組成的集合,包括,使用這些模塊可以很方便的協(xié)助我們進(jìn)行開發(fā),比如說Spring支持IoC(Inversion of Control),和AOP(Aspect-Oriented Programming),可以很方便的對數(shù)據(jù)庫訪問(JDBC)、可以很方便地集成第三方組件。。。
Spring包含很多模塊,其中最重要的就是Spring-Core模塊。Spring的其他模塊(比如SpringMVC)的功能實(shí)現(xiàn)都依賴于該模塊。
核心思想是:避免重復(fù)造輪子,開箱即用,提高開發(fā)效率。(開蓋即飲)一門語言的流行,通常需要一個殺手級的應(yīng)用,Spring就是Java生態(tài)的一個殺手級應(yīng)用框架
Spring包含的模塊
Core Container
Spring的核心模塊,主要提供IoC依賴注入功能的支持。Spring其他所有的功能都需要依賴于該模塊,
Spring IoC
淺顯的理解:IoC,控制反轉(zhuǎn),名字乍一看比較難理解,但其實(shí)核心就是Spring框架通過容器控制Bean對象,在項(xiàng)目代碼中通過注解@Service
的形式控制,而不是程序員一個個的new來控制了。
更加好理解的版本就是:
IoC 解決的是對象管理和對象依賴的問題。本來Bean對象需要我們自己手動New,但是Spring的IoC特性使得對象都被交給Spring的IoC容器管理??梢园袸oC當(dāng)做是一個對象工廠,工廠管理這些對象的創(chuàng)建以及依賴關(guān)系。需要用到對象時,直接從工廠中拿取就行了。
控制反轉(zhuǎn)和依賴注入??刂品崔D(zhuǎn):將原本自己的控制權(quán)交給別人(Spring容器),是一種思想或者說是設(shè)計模式。依賴注入是控制反轉(zhuǎn)的具體實(shí)現(xiàn)方式,對象無需自行創(chuàng)建或者管理它的依賴關(guān)系,依賴關(guān)系將被自動注入
到需要他們的對象當(dāng)中去。
IoC的好處(為什么需要控制反轉(zhuǎn)?):主要的好處是將對象集中統(tǒng)一管理,并且降低耦合。具體:IoC可以方便單元測試、對象創(chuàng)建復(fù)雜、對象依賴復(fù)雜、單例等等,什么都可以交給SpringIoC。理論上,自己手動new都可以解決以上問題,但是為了管理這一整套內(nèi)容,需要自己寫工廠來實(shí)現(xiàn)相應(yīng)的需求,這個工廠寫好你會發(fā)現(xiàn),其實(shí)就是Spring。Spring的輪子
已經(jīng)造就好了,直接使用就行了。并且,Spring的核心不僅僅是IoC,還有一整套的Bean聲明周期管理。
IoC(Inversion of Control)是一種設(shè)計思想,而不是一個具體的技術(shù)實(shí)現(xiàn)。IoC的思想就是將原本在程序中的手動創(chuàng)建對象的控制權(quán),交由Spring框架來管理。
IoC 容器就像是一個工廠一樣,當(dāng)我們需要創(chuàng)建一個對象的時候,只需要配置好配置文件/注解即可,完全不用考慮對象是如何被創(chuàng)建出來的。
Spring AOP,面向切片編程
解決的是非業(yè)務(wù)代碼抽取的問題。
AOP的底層技術(shù)是動態(tài)代理,Spring內(nèi)實(shí)現(xiàn)依賴的是BeanPostProcessor,
什么是Java Bean?:Bean是豆子的意思,含義是可重復(fù)利用的組件。JavaBean就是一個類,是用來包裝數(shù)據(jù),是一個中轉(zhuǎn)載體。文章來源:http://www.zghlxwxcb.cn/news/detail-689479.html
JavaBean的生命周期管理
SpringBoot
Spring是為了簡化J2EE的企業(yè)級應(yīng)用程序開發(fā)而產(chǎn)生的,SpringBoot是為了簡化Spring開發(fā)而誕生的(減少配置文件,開箱即用)。
SpringBoot只是簡化了配置的步驟,如果要開發(fā)SpringMVC框架的web程序,就還是需要將SpringMVC作為MVC的架構(gòu)。文章來源地址http://www.zghlxwxcb.cn/news/detail-689479.html
DDD
Java中的注解
-
@Resource
:用于依賴注入,在類中標(biāo)識需要注入的資源或依賴項(xiàng),并由容器自動進(jìn)行注入。注入到了哪?為什么要注入?為應(yīng)用部件(比如JavaBean)提供服務(wù)。 -
@Service
:用于標(biāo)識一個類作為服務(wù)層的組件(Service)。通過使用@Service
注解,可以將一個普通的Java類標(biāo)記為服務(wù)層組件,并由Spring容器進(jìn)行管理和注入。Service注解也看其來自于誰,來自于Spring(Dubbo)就由Spring(Dubbo)管理。 -
@Component
:用于標(biāo)識一個類作為普通的組件; -
@Repository
:用于標(biāo)識一個類作為數(shù)據(jù)訪問層的組件; -
@Controller
:用于標(biāo)識一個類作為控制層的一個組間; -
@
: -
@
: -
@
:
到了這里,關(guān)于后端開發(fā)基礎(chǔ)概念的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!