常用框架概览
原文地址:https://www.cnblogs.com/lagou/p/10552815.html
Spring框架自2002年誕生以來(lái)一直備受開(kāi)發(fā)者青睞,它包括SpringMVC、SpringBoot、Spring Cloud、Spring Cloud Dataflow等解決方案。有人親切的稱(chēng)之為:Spring 全家桶。很多研發(fā)人員把spring看作心目中最好的java項(xiàng)目,沒(méi)有之一。所以這是重點(diǎn)也是難點(diǎn),工作中必須會(huì),面試時(shí)肯定考。那么,花費(fèi)10分鐘,梳理Spring框架相關(guān)知識(shí)。spring系列包含非常多的項(xiàng)目,可以滿足java開(kāi)發(fā)中的方方面面。先來(lái)看常用框架的知識(shí)點(diǎn)匯總,如圖:
一、Spring框架
▌1.spring framework
也就是我們經(jīng)常說(shuō)的spring框架,包括了ioc依賴(lài)注入,Context上下文、bean管理、springmvc等眾多功能模塊,其它spring項(xiàng)目比如spring boot也會(huì)依賴(lài)spring框架。
▌2.spring boot
它的目標(biāo)是簡(jiǎn)化Spring應(yīng)用和服務(wù)的創(chuàng)建、開(kāi)發(fā)與部署,簡(jiǎn)化了配置文件,使用嵌入式web服務(wù)器,含有諸多開(kāi)箱即用的微服務(wù)功能,可以和spring cloud聯(lián)合部署。Spring Boot的核心思想是約定大于配置,應(yīng)用只需要很少的配置即可,簡(jiǎn)化了應(yīng)用開(kāi)發(fā)模式。
▌3.Spring Data
是一個(gè)數(shù)據(jù)訪問(wèn)及操作的工具集,封裝了多種數(shù)據(jù)源的操作能力,包括:jdbc、Redis、MongoDB等。
▌4.Spring Cloud
是一套完整的微服務(wù)解決方案,是一系列不同功能的微服務(wù)框架的集合。Spring Cloud基于Spring Boot,簡(jiǎn)化了分布式系統(tǒng)的開(kāi)發(fā),集成了服務(wù)發(fā)現(xiàn)、配置管理、消息總線、負(fù)載均衡、斷路器、數(shù)據(jù)監(jiān)控等各種服務(wù)治理能力。比如sleuth提供了全鏈路追蹤能力,Netflix套件提供了hystrix熔斷器、zuul網(wǎng)關(guān)等眾多的治理組件。config組件提供了動(dòng)態(tài)配置能力,bus組件支持使用RabbitMQ、kafka、Activemq等消息隊(duì)列,實(shí)現(xiàn)分布式服務(wù)之間的事件通信。
▌5.?Spring Security
主要用于快速構(gòu)建安全的應(yīng)用程序和服務(wù),在Spring Boot和Spring Security OAuth2的基礎(chǔ)上,可以快速實(shí)現(xiàn)常見(jiàn)安全模型,如單點(diǎn)登錄,令牌中繼和令牌交換。你可以了解一下oauth2授權(quán)機(jī)制和jwt認(rèn)證方式。oauth2是一種授權(quán)機(jī)制,規(guī)定了完備的授權(quán)、認(rèn)證流程。JWT全稱(chēng)是JSON Web Token,是一種把認(rèn)證信息包含在token中的認(rèn)證實(shí)現(xiàn),oauth2授權(quán)機(jī)制中就可以應(yīng)用jwt來(lái)作為認(rèn)證的具體實(shí)現(xiàn)方法。
二、Struts框架
struts是曾經(jīng)非常火爆的web組合ssh中的控制層。我們知道web服務(wù)一般都采用MVC分層模型構(gòu)建,就是model層負(fù)責(zé)內(nèi)部數(shù)據(jù)模型,controller負(fù)責(zé)請(qǐng)求的分發(fā)控制,view層負(fù)責(zé)返回給用戶展示的視圖。struts實(shí)現(xiàn)的就是其中控制層的角色。Struts采用Filter實(shí)現(xiàn),針對(duì)類(lèi)進(jìn)行攔截,每次請(qǐng)求就會(huì)創(chuàng)建一個(gè)Action。使用struts的SSH組合已經(jīng)逐漸被使用springMVC的SSM組合代替,也就是Spring-MVC+Spring+MyBatis的組合,一方面原因是由于struts對(duì)幾次安全漏洞的處理,讓大家對(duì)struts的信心受到影響;另一方面,springmvc更加的靈活,不需要額外配置,不存在和spring整合等問(wèn)題,使用更加方便,所以建議以SSM框架的學(xué)習(xí)為主。
三、ORM框架
ORM就是對(duì)象關(guān)系匹配,是為了解決面向?qū)ο笈c關(guān)系數(shù)據(jù)庫(kù)存在的互不匹配的問(wèn)題。簡(jiǎn)單來(lái)說(shuō),就是把關(guān)系數(shù)據(jù)庫(kù)中的數(shù)據(jù)轉(zhuǎn)換成面向?qū)ο蟪绦蛑械膶?duì)象。常用的ORM框架有Hibernate和MyBatis,也就是ssh組合和ssm組合中的h與m。它們的特點(diǎn)和區(qū)別如下:
- Hibernate對(duì)數(shù)據(jù)庫(kù)結(jié)構(gòu)提供了完整的封裝,實(shí)現(xiàn)了POJO對(duì)象與數(shù)據(jù)庫(kù)表之間的映射,能夠自動(dòng)生成并執(zhí)行SQL語(yǔ)句。只要定義了POJO 到數(shù)據(jù)庫(kù)表的映射關(guān)系,就可以通過(guò)Hibernate提供的方法完成數(shù)據(jù)庫(kù)操作。Hibernate符合JPA規(guī)范,就是Java持久層API。
- mybatis通過(guò)映射配置文件,將SQL所需的參數(shù)和返回的結(jié)果字段映射到指定對(duì)象,mybatis不會(huì)自動(dòng)生成sql,需要自己定義sql語(yǔ)句,不過(guò)更方便對(duì)sql語(yǔ)句進(jìn)行優(yōu)化。
總結(jié)起來(lái):
- hibernate配置要比mybatis復(fù)雜的多,學(xué)習(xí)成本也比mybatis高。mybatis,簡(jiǎn)單、高效、靈活,但是需要自己維護(hù)sql;
- hibernate功能強(qiáng)大、全自動(dòng)、適配不同數(shù)據(jù)庫(kù),但是非常復(fù)雜,靈活性稍差。
四、Netty框架
Netty是一個(gè)高性能的異步事件驅(qū)動(dòng)的網(wǎng)絡(luò)通信框架,Netty對(duì)JDK原生NIO進(jìn)行封裝,簡(jiǎn)化了網(wǎng)絡(luò)服務(wù)的開(kāi)發(fā)。下文會(huì)詳細(xì)講解另外,同類(lèi)型的框架還有mina、grizzly,不過(guò)目前使用的相對(duì)較少,一般不會(huì)在面試中出現(xiàn),可以作為興趣簡(jiǎn)單了解。
五、RPC框架
Motan、Dubbo、gRPC都是比較常用的高性能rpc框架,可以提供完善的服務(wù)治理能力,java版本的通信層都是基于前面提到的Netty實(shí)現(xiàn)。它們的特點(diǎn)稍后介紹。
六、其他框架
jersy和restEasy都是可以快速開(kāi)發(fā)restful服務(wù)的框架。和springmvc相比,這兩個(gè)框架都是基于jax-rs標(biāo)準(zhǔn),而springmvcs基于servlet,使用自己構(gòu)建的API,是兩個(gè)不同的標(biāo)準(zhǔn)。shiro框架是一個(gè)與spring security類(lèi)似的開(kāi)源的權(quán)限管理框架,用于訪問(wèn)授權(quán)、認(rèn)證、加密及會(huì)話管理。能夠支持單機(jī)與分布式session管理。相比security,shiro更加簡(jiǎn)單易用。
本篇文章將重點(diǎn)闡述Spring相關(guān)知識(shí)點(diǎn),其他框架請(qǐng)期待下一篇
總結(jié)
- 上一篇: Spring框架—基础介绍
- 下一篇: HBase—基础介绍