java框架都有哪些
Java言語(yǔ)仍然是當(dāng)下“程序猿”們最愛(ài)運(yùn)用的熱門編程言語(yǔ)之一,想要進(jìn)入這個(gè)職業(yè),Java能夠?yàn)槟阋罚芏喑鯇W(xué)的人可能沒(méi)有系統(tǒng)的了解過(guò)Java結(jié)構(gòu)都有哪些。今日為我們整理一下常見的Java結(jié)構(gòu)都有什么?
1.Spring結(jié)構(gòu)
Spring結(jié)構(gòu)是現(xiàn)在Java后端結(jié)構(gòu)家族里邊最強(qiáng)壯的一個(gè),具有IOC和AOP兩大利器,簡(jiǎn)化了開發(fā)的復(fù)雜性。而且Spring現(xiàn)在能與一切干流開發(fā)結(jié)構(gòu)集成,是一個(gè)全能結(jié)構(gòu),Spring讓Java開發(fā)變得簡(jiǎn)單。
2.SpringMVC結(jié)構(gòu)
這是一個(gè)MVC的開源結(jié)構(gòu)用來(lái)替代Struts,是Spring項(xiàng)目里邊的一個(gè)重要部分,能和SpringIOC容器結(jié)合,具有松耦合、便利裝備、代碼別離等特點(diǎn),讓Java程序員開發(fā)WEB項(xiàng)目變得愈加容易。
3.SpringBoot結(jié)構(gòu)
SpringBoot是Spring開源組織下的一個(gè)子項(xiàng)目,也是Spring組件一站式解決方法,主要是為了簡(jiǎn)化運(yùn)用Spring的結(jié)構(gòu)難度。
4.SpringCloud
這是一系列結(jié)構(gòu)有序調(diào)集,是現(xiàn)在最火的微服務(wù)結(jié)構(gòu)首選,首先它是利用SpringBoot開發(fā)的便利性奇妙的簡(jiǎn)化了分布式系統(tǒng)基礎(chǔ)的開發(fā),如服務(wù)發(fā)現(xiàn)注冊(cè)、裝備中心、音訊總線、負(fù)載均衡、斷路器、數(shù)據(jù)監(jiān)控等,都能夠用SpringBoot的開發(fā)風(fēng)格做到一鍵發(fā)動(dòng)和部署。
5.Netty
Netty是由JBOSS供給的開源的異步的,根據(jù)事情驅(qū)動(dòng)的網(wǎng)絡(luò)通信結(jié)構(gòu)。能夠快速提高開發(fā)功用,高可靠性的網(wǎng)絡(luò)服務(wù)器和客戶端程序,netty簡(jiǎn)化了網(wǎng)絡(luò)運(yùn)用的編程開發(fā)過(guò)程,運(yùn)用開發(fā)網(wǎng)絡(luò)編程變得反常簡(jiǎn)單。
6.Quartz
Quartz是一個(gè)根據(jù)Java的廣泛運(yùn)用的開源的任務(wù)調(diào)度結(jié)構(gòu),做過(guò)定時(shí)任務(wù)的沒(méi)有沒(méi)用過(guò)這個(gè)結(jié)構(gòu)的吧?
7.jQuery
jQuery是一個(gè)快速、簡(jiǎn)潔的JavaScript結(jié)構(gòu),它封裝JavaScript常用的功用代碼,供給一種簡(jiǎn)潔的JavaScript規(guī)劃模式,極大地簡(jiǎn)化了JavaScript編程。
8.Log4j
Log4j是Apache的一個(gè)開源日志結(jié)構(gòu),經(jīng)過(guò)Log4j我們能夠?qū)⒊绦蛑械娜罩拘畔⑤敵龅娇刂婆_(tái)、文件等來(lái)記錄日志。作為一個(gè)最老牌的日志結(jié)構(gòu),它現(xiàn)在的干流版本是Log4j2。Log4j2是從頭架構(gòu)的一款日志結(jié)構(gòu),扔掉了之前Log4j的不足,以及吸取了優(yōu)異日志結(jié)構(gòu)Logback的規(guī)劃。
java不常用的框架
一、MyBatisGenerator
這個(gè)結(jié)構(gòu)能夠依照裝備為咱們主動(dòng)生成mybatis對(duì)應(yīng)的mapper.xml、實(shí)體以及dao文件,在前期咱們還需求自己寫mapper文件時(shí),的確是開發(fā)者的一個(gè)福音,能夠節(jié)約咱們?cè)S多時(shí)刻來(lái)寫一些無(wú)用的增刪改查的dao層代碼,這個(gè)結(jié)構(gòu)自身沒(méi)有問(wèn)題,可是卻不合適項(xiàng)目用,很難管理。
在咱們開發(fā)過(guò)程中,很難做到對(duì)一個(gè)項(xiàng)目從一而終,常常一個(gè)項(xiàng)目易手幾個(gè)人十幾個(gè)人都有可能,每個(gè)人的開發(fā)習(xí)慣不一樣,我在工作中遇到的問(wèn)題,項(xiàng)目里用了這個(gè)結(jié)構(gòu),可是在后續(xù)開發(fā)過(guò)程中,需求改動(dòng)表結(jié)構(gòu)增刪字段,這個(gè)時(shí)分,咱們需求從頭生成相關(guān)的代碼,可是這個(gè)時(shí)分,有些人圖方便或許不知道怎么用這個(gè)結(jié)構(gòu),就會(huì)挑選直接在生成的代碼里修正,然后還順暢上線了,那接下來(lái),這個(gè)模塊根本被廢棄了,后續(xù)的人再加字段,從頭生成代碼會(huì)覆蓋他人手藝加入的代碼,十分糾結(jié),本來(lái)很簡(jiǎn)單的一個(gè)問(wèn)題,到此變得十分棘手,只能心一橫繼續(xù)手藝修正代碼了。
其實(shí)這個(gè)結(jié)構(gòu)沒(méi)有問(wèn)題,問(wèn)題是不能有效操控開發(fā)人員運(yùn)用它,在項(xiàng)目經(jīng)過(guò)長(zhǎng)時(shí)刻多人經(jīng)手后,大都會(huì)忘掉最初的夢(mèng)想,項(xiàng)目代碼變得破爛不堪無(wú)法保護(hù),終究走上了重構(gòu)的路途。
所以在挑選結(jié)構(gòu)的時(shí)分,我一般不會(huì)挑選這個(gè)結(jié)構(gòu),取而代之的,比較傾向于運(yùn)用MybatisPlus或許Jpa,不必靜態(tài)生成代碼,要加字段直接加就好了,十分方便,功能也很強(qiáng)壯,MyBatisGenerator早起幫了咱們很大忙,可是現(xiàn)已不合適新的項(xiàng)目了。
二、MapStruct
先引用一個(gè)開發(fā)同仁的文章:mapstruct運(yùn)用詳解-淼淼之森-博客園,介紹的十分好。
mapstruct便是用來(lái)做對(duì)象拷貝的,相比beanutils的確有許多長(zhǎng)處,且底層實(shí)現(xiàn)不是用反射來(lái)做的,而是動(dòng)態(tài)生成實(shí)現(xiàn)類,性能也還能夠。還能夠適應(yīng)不同的類型,不同的字段的映射,乃至是復(fù)雜對(duì)象也能夠映射,不可謂不強(qiáng)壯。可是強(qiáng)壯的地方是需求付出代價(jià)的。
最近接觸的一個(gè)項(xiàng)目用到了這個(gè)結(jié)構(gòu),打內(nèi)心里沖突,應(yīng)為常常要寫expression表達(dá)式,在寫的過(guò)程中是沒(méi)有任何提示的,寫錯(cuò)了不知道,IDE里不會(huì)主動(dòng)提示出來(lái),每次都要編譯后才在操控臺(tái)輸出過(guò)錯(cuò),然后再去改,十分費(fèi)事,而且要寫的表達(dá)式有些其實(shí)便是java代碼,放到字符串里,我覺(jué)得一般。主要是用這個(gè)開發(fā)效率有點(diǎn)低,我喜歡那種錯(cuò)了就直接提示出來(lái),而不是編譯的時(shí)分再提示。