框架集合

在這裏插入圖片描述

一、常用的5個spring框架

spring framework

我們經常說的spring框架,包括了ioc依賴注入,Context上下文、bean管理、springmvc等衆多功能模塊,其它spring項目比如spring boot也會依賴spring框架。

spring boot

它的目標是簡化Spring應用和服務的創建、開發與部署,簡化了配置文件,使用嵌入式web服務器,含有諸多開箱即用的微服務功能,可以和spring cloud聯合部署。Spring Boot的核心思想是約定大於配置,應用只需要很少的配置即可,簡化了應用開發模式。

Spring Data

是一個數據訪問及操作的工具集,封裝了多種數據源的操作能力,包括:jdbc、Redis、MongoDB等。

Spring Cloud

是一套完整的微服務解決方案,是一系列不同功能的微服務框架的集合。Spring Cloud基於Spring Boot,簡化了分佈式系統的開發,集成了服務發現、配置管理、消息總線、負載均衡、斷路器、數據監控等各種服務治理能力。比如sleuth提供了全鏈路追蹤能力,Netflix套件提供了hystrix熔斷器、zuul網關等衆多的治理組件。config組件提供了動態配置能力,bus組件支持使用RabbitMQ、kafka、Activemq等消息隊列,實現分佈式服務之間的事件通信。

Spring Security

主要用於快速構建安全的應用程序和服務,在Spring Boot和Spring Security OAuth2的基礎上,可以快速實現常見安全模型,如單點登錄,令牌中繼和令牌交換。你可以瞭解一下oauth2授權機制和jwt認證方式。oauth2是一種授權機制,規定了完備的授權、認證流程。JWT全稱是JSON Web Token,是一種把認證信息包含在token中的認證實現,oauth2授權機制中就可以應用jwt來作爲認證的具體實現方法。


二、Struts的具體作用

struts是曾經非常火爆的web組合ssh中的控制層。我們知道web服務一般都採用MVC分層模型構建, struts實現的就是其中控制層的角色。

  • model層負責內部數據模型

  • controller負責請求的分發控制

  • view層負責返回給用戶展示的視圖

Struts採用Filter實現,針對類進行攔截,每次請求就會創建一個Action。使用struts的SSH組合已經逐漸被使用springMVC的SSM組合代替,也就是Spring-MVC+Spring+MyBatis的組合,

一方面原因是由於struts對幾次安全漏洞的處理,讓大家對struts的信心受到影響;

另一方面,springmvc更加的靈活,不需要額外配置,不存在和spring整合等問題,使用更加方便,所以建議以SSM框架的學習爲主。


三、ORM框架

ORM就是對象關係匹配,是爲了解決面向對象與關係數據庫存在的互不匹配的問題。簡單來說,就是把關係數據庫中的數據轉換成面向對象程序中的對象。

區別

Hibernate對數據庫結構提供了完整的封裝,實現了POJO對象與數據庫表之間的映射,能夠自動生成並執行SQL語句。只要定義了POJO 到數據庫表的映射關係,就可以通過Hibernate提供的方法完成數據庫操作。Hibernate符合JPA規範,就是Java持久層API。

mybatis通過映射配置文件,將SQL所需的參數和返回的結果字段映射到指定對象,mybatis不會自動生成sql,需要自己定義sql語句,不過更方便對sql語句進行優化。

1.hibernate配置要比mybatis複雜的多,學習成本也比mybatis高。mybatis,簡單、高效、靈活,但是需要自己維護sql;

2.hibernate功能強大、全自動、適配不同數據庫,但是非常複雜,靈活性稍差。

四、Netty簡介

Netty是一個高性能的異步事件驅動的網絡通信框架,Netty對JDK原生NIO進行封裝,簡化了網絡服務的開發。同類型的框架還有mina、grizzly,不過目前使用的相對較少,一般不會在面試中出現,可以作爲興趣簡單瞭解。

五、RPC服務

Motan、Dubbo、gRPC都是比較常用的高性能rpc框架,可以提供完善的服務治理能力,java版本的通信層都是基於前面提到的Netty實現。

六、其他常用框架

jersy和restEasy都是可以快速開發restful服務的框架。和springmvc相比,這兩個框架都是基於jax-rs標準,而springmvcs基於servlet,使用自己構建的API,是兩個不同的標準。

shiro框架是一個與spring security類似的開源的權限管理框架,用於訪問授權、認證、加密及會話管理。能夠支持單機與分佈式session管理。相比security,shiro更加簡單易用。