依賴 netty spring_十分鐘帶你了解Spring的七大知識點,程序員必了解

Spring框架自誕生以來一直備受開發者青睞,有人親切的稱之為:Spring 全家桶。它包括SpringMVC、SpringBoot、Spring Cloud、Spring Cloud Dataflow等解決方案。

很多研發人員把spring看作心目中最好的java項目,沒有之一。

所以這是重點也是難點,工作中必須會,面試時肯定考。

那么,今天花費10分鐘,梳理Spring框架相關知識

一、Spring知識點-匯總

spring系列包含非常多的項目,可以滿足java開發中的方方面面。

先來看常用框架的知識點匯總,如圖:

cae71e53e2a04251ccc1e981c9951ab3.png

螞蟻課堂帶你學java

5個常用的spring框架

1.spring framework

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

2.spring boot

它的目標是簡化Spring應用和服務的創建、開發與部署,簡化了配置文件,使用嵌入式web服務器,含有諸多開箱即用的微服務功能,可以和spring cloud聯合部署。

Spring Boot的核心思想是約定大于配置,應用只需要很少的配置即可,簡化了應用開發模式。

3.Spring Data

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

4.Spring Cloud

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

5. Spring Security

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

Struts的具體作用

struts是曾經非常火爆的web組合ssh中的控制層。我們知道web服務一般都采用MVC分層模型構建,就是model層負責內部數據模型,controller負責請求的分發控制,view層負責返回給用戶展示的視圖。struts實現的就是其中控制層的角色。

Struts采用Filter實現,針對類進行攔截,每次請求就會創建一個Action。使用struts的SSH組合已經逐漸被使用springMVC的SSM組合代替,也就是Spring-MVC+Spring+MyBatis的組合,一方面原因是由于struts對幾次安全漏洞的處理,讓大家對struts的信心受到影響;另一方面,springmvc更加的靈活,不需要額外配置,不存在和spring整合等問題,使用更加方便,所以建議以SSM框架的學習為主。

常用的ORM框架

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

常用的ORM框架有Hibernate和MyBatis,也就是ssh組合和ssm組合中的h與m。

它們的特點和區別如下

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更加簡單易用。

二、Spring知識點-詳解

spring中的幾個重要概念如下:

1.IOC

IOC,就是控制反轉,如最左邊,拿公司招聘崗位來舉例:

假設一個公司有產品、研發、測試等崗位。如果是公司根據崗位要求,逐個安排人選,如圖中向下的箭頭,這是正向流程。如果反過來,不用公司來安排候選人,而是由第三方獵頭來匹配崗位和候選人,然后進行推薦,如圖中向上的箭頭,這就是控制反轉。

在spring中,對象的屬性是由對象自己創建的,就是正向流程;如果屬性不是對象創建,而是由spring來自動進行裝配,就是控制反轉。這里的DI也就是依賴注入,就是實現控制反轉的方式。正向流程導致了對象于對象之間的高耦合,IOC可以解決對象耦合的問題,有利于功能的復用,能夠使程序的結構變得非常靈活。

2.context上下文和bean

spring進行IOC實現時使用的有兩個概念:context上下文和bean。

如中間圖所示,所有被spring管理的、由spring創建的、用于依賴注入的對象,就叫做一個bean。Spring創建并完成依賴注入后,所有bean統一放在一個叫做context的上下文中進行管理。

3.AOP

AOP就是面向切面編程。如右面的圖,一般程序執行流程是從controller層調用service層、然后service層調用DAO層訪問數據,最后在逐層返回結果。

這個是圖中向下箭頭所示的按程序執行順序的縱向處理。但是,一個系統中會有多個不同的服務,例如用戶服務、商品信息服務等等,每個服務的controller層都需要驗證參數,都需要處理異常,如果按照圖中紅色的部分,對不同服務的縱向處理流程進行橫切,在每個切面上完成通用的功能,例如身份認證、驗證參數、處理異常等等、這樣就不用在每個服務中都寫相同的邏輯了,這就是AOP思想解決的問題。

AOP以功能進行劃分,對服務順序執行流程中的不同位置進行橫切,完成各服務共同需要實現的功能。

spring應用相關

71ff492da04ad65dfc9565212cd1065c.png

螞蟻課堂帶你學java

1.常用注釋

a.類型類注釋

類型類注釋包括controller、service等,需要重點了解

其中component和bean注解的區別如下:

  • @Component注解在類上使用表明這個類是個組件類,需要Spring為這個類創建bean。
  • @Bean注解使用在方法上,告訴Spring這個方法將會返回一個Bean對象,需要把返回的對象注冊到Spring的應用上下文中。

b.設置類注解

重點了解@Autowire和@Qualifier以及bytype、byname等不同的自動裝配機制。

c.web類注解

主要以了解為主,關注@RequestMapping、@GetMapping、@PostMapping等路徑匹配注解,以及@PathVariable、@RequestParam 等參數獲取注解。

d.功能類注解

包括@ImportResource引用配置、@ComponentScan注解自動掃描、@Transactional事務注解等等,這里不一一介紹了。

2.配置方式

需要了解配置spring的幾種方式,xml文件配置、注解配置和使用api進行配置。

自動裝配機制需要了解按類型匹配進行自動裝配,按bean名稱進行自動裝配,構造器中的自動裝配和自動檢測等主要的四種方式。

還需要了解一下list、set、map等集合類屬性的配置方式以及內部bean的使用。

Spring中bean的生命周期

第1步:調用bean的構造方法創建bean;

第2步:通過反射調用setter方法進行屬性的依賴注入;

第3步:如果實現BeanNameAware接口的話,會設置bean的name;

第4步:如果實現了BeanFactoryAware,會把bean factory設置給bean;

第5步:如果實現了ApplicationContextAware,會給bean設置ApplictionContext;

第6步:如果實現了BeanPostProcessor接口,則執行前置處理方法;

第7步:實現了InitializingBean接口的話,執行afterPropertiesSet方法;

第8步:執行自定義的init方法;

第9步:執行BeanPostProcessor接口的后置處理方法。

這時,就完成了bean的創建過程。

Spring擴展接口

對spring進行定制化功能擴展時,可以選擇如下一些擴展點:

1.BeanFactoryPostProcessor

是beanFactory后置處理器,支持在bean factory標準初始化完成后,對bean factory進行一些額外處理。在講context初始化流程時介紹過,這時所有的bean的描述信息已經加載完畢,但是還沒有進行bean初始化。例如前面提到的PropertyPlaceholderConfigurer,就是在這個擴展點上對bean屬性中的占位符進行替換。

2.BeanDefinitionRegistryPostProcessor

它擴展自BeanFactoryPostProcessor,在執行BeanFactoryPostProcessor的功能前,提供了可以添加bean definition的能力,允許在初始化一般bean前,注冊額外的bean。例如可以在這里根據bean的scope創建一個新的代理bean。

3.BeanPostProcessor

提供了在bean初始化之前和之后插入自定義邏輯的能力。與BeanFactoryPostProcessor的區別是處理的對象不同,BeanFactoryPostProcessor是對beanfactory進行處理,BeanPostProcessor是對bean進行處理。

4.ApplicationContextAware

可以獲得ApplicationContext及其中的bean,當需要在代碼中動態獲取bean時,可以通過實現這個接口來實現。

5.InitializingBean

可以在bean初始化完成,所有屬性設置完成后執行特定邏輯,例如對自動裝配對屬性進行驗證等等。

6.DisposableBean

用于在bean被銷毀前執行特定的邏輯,例如做一些回收工作等。

7.ApplicationListener

用來監聽spring的標準應用事件或者自定義事件。

springboot相關的知識點

1.啟動流程

主要步驟首先要配置environment,然后準備context上下文,包括執行applicationContext的后置處理、初始化initializer、通知listener處理contextPrepared和contextLoaded事件。最后執行refreshContext,也就是前面介紹過的AbstractApplicationContext類的refresh方法。

2.配置文件

然后要知道在Spring Boot中有兩種上下文,一種是bootstrap, 另外一種是application。

bootstrap是應用程序的父上下文,也就是說bootstrap會先于applicaton加載。bootstrap主要用于從額外的資源來加載配置信息,還可以在本地外部配置文件中解密屬性。bootstrap里面的屬性會優先加載,默認也不能被本地相同配置覆蓋。

3.注解

@SpringBootApplication包含了@ComponentScan、@EnableAutoConfiguration、@SpringBootConfiguration三個注解

而@SpringBootConfiguration注解包含了@Configuration注解。也就是springboot的自動配置功能。

@Conditional注解就是控制自動配置的生效條件的注解,例如bean或class存在、不存在時進行配置,當滿足條件時進行配置等等。

4.特色模塊

  • starter是springboot提供的無縫集成功能的一種方式,使用某個功能時開發者不需要關注各種依賴庫的處理,不需要具體的配置信息,由Spring Boot自動配置進行bean的創建。例如需要使用web功能時,只需要在依賴中引入spring-boot-starter-web即可。
  • actuator是用來對應用程序進行監視和管理,通過restful api請求來監管、審計、收集應用的運行情況。
  • devtools提供了一系列開發工具的支持,來提高開發效率。例如熱部署能力等。
  • CLI就是命令行接口,是一個命令行工具,支持使用Groovy腳本,可以快速搭建spring原型項目。

以上為Spring框架需要掌握的內容,前面提到的核心機制、核心流程,建議閱讀源碼加深理解。

寫在最后

免費的java資料需要的自己領取哦。

ab5f110943a49bd7f25cabcdc0bdfb5d.png

關注小編哦

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/533717.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/533717.shtml
英文地址,請注明出處:http://en.pswp.cn/news/533717.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

南通大學計算機組成原理期末考試題,南通大學計算機組成原理期末考試范圍.docx...

南通大學計算機組成原理期末考試范圍計算機組成原理選擇填空題 15分填空題 20 分計算題 50分設計題 15分第一章計算機的主要性能指標馮諾依曼型計算機的體系結構、組成部分控制器的基本任務計算機系統的層次結構第二章數據與文字的表示方法定點數的表示方法數的機器碼表示校驗碼…

android實現手機拍照以及圖片預覽功能_手機系統將有A/B分區?Android 11這些變化你關注過嗎...

跳票讓Android 11沉淀下來并吸引了更多的消費者,在iPhone SE大規模進軍主流消費市場的今天,Android這邊難道不想依靠新系統扳回一局嗎?在人們感嘆iOS一些功能似曾相似的時候,Android 11新的突破與創新格外讓人振奮。01Android 11欲…

小程序的點贊功能能和瀏覽次數功能_掃碼點餐小程序好用嗎?小程序還能實現哪些功能?...

有不少的餐廳現在都可以用小程序掃碼點餐了,為什么現在很少用公眾號點餐了?原因其實很簡單,用公眾號點餐用戶還要關注公眾號,第二個就是在于公眾號每天發消息很煩,而小程序則沒有這樣的煩惱,只在使用的時候…

word計算機課教學反思,《WORD》初中信息技術的教學反思

《WORD》初中信息技術的教學反思本節課在建構主義學習理論指導下,采用“任務驅動”教學策略,借助多媒體課件,對學生實施研究式自主學習教學模式,教學中注重培養學生分析問題、解決問題的能力。通過學習和實際操作,培養…

simulink中mask設置_(實現BPSK學習Verilog)1. Simulink仿真實現

歡迎關注BUG記錄知乎專欄和BUG記錄公眾號,關注BUG記錄公眾號回復101獲取本文使用的Simulink仿真文件微信號:BugRec由于最近研究某個高速接口沒什么實質性的突破,實在寫不出太好的東西,所以就寫點更為基礎的東西分享給大家&#xf…

arima模型_[不說人話系列]-ARIMA模型

看文獻的時候看到幾個統計推理的模型,想要大概了解,想做個系列,記錄自己胡說八道的數理筆記過程。如有錯誤,感謝您指正。文前感謝馮小姐詳細認真的技術援助!1- 名稱簡稱:ARIMA模型英文名:Auto r…

認識計算機網絡試講稿,操作系統簡介試講教案.pdf

學習必備 歡迎下載課題 操作系統簡介內容章節:第二章第一節 課型:新授課教學時間: 本節內容共授課2課時 授課班級:學習者分析:學生通過第一章的學習,對計算機的軟、硬件知識有了初步的了解,。但由于學生普遍對計算機理…

pcb天線和純銅天線_如何簡化天線設計?相控陣波束成形IC來助您

為提高性能,無線通信和雷達系統對天線架構的需求不斷增長。只有那些功耗低于傳統機械操縱碟形天線的天線才能實現許多新的應用。除了這些要求以外,還需要針對新的威脅或新的用戶快速重新定位,傳輸多個數據流,并以超低的成本……正…

c語言貪吃蛇_C語言貪吃蛇完整代碼

#include #include #include //windows編程頭文件#include #include //控制臺輸入輸出頭文件#ifndef __cplusplustypedef char bool;#define false 0#define true 1#endif//將光標移動到控制臺的(x,y)坐標點處void gotoxy(int x, int y){COORD coord;coord.X x;coord.Y y;Se…

上海市計算機一級客觀題,2012年上海市高校計算機等級考試(一級)模擬卷客觀題...

2012年上海市高校計算機等級考試(一級)模擬卷客觀題 (5頁)本資源提供全文預覽,點擊全文預覽即可全文預覽,如果喜歡文檔就下載吧,查找使用更方便哦!11.9 積分關于防火墻,以下說法不正確的是____A____。下列屬于視頻制作的常用軟件的…

百度云盤云知夢php_教你搭建私有云盤,簡單快速,完全傻瓜式!不限速,永久有效!...

免費的云盤服務有很多,但是總感覺把重要文件存在上面不安全,動不動就跑路或者限速。辛辛苦苦收集的學習資料,一夜直接可能就會付諸東流。最穩妥的方式是存放在本地硬盤中,但是要進行共享或者不同設備之間進行交換,就顯…

結束 txt進程_Python多進程抓取拉鉤網十萬數據

轉載:Python多進程抓取拉鉤網十萬數據準備安裝Mongodb數據庫其實不是一定要使用MongoDB,大家完全可以使用MySQL或者Redis,全看大家喜好。這篇文章我們的例子是Mongodb,所以大家需要下載它。在Windows中。由于MongoDB默認的數據目錄…

計算機休眠怎么喚醒,電腦休眠后,就無法喚醒了?怎么辦?快速教你解決這個問題...

電腦是目前人們生活、工作中使用最多的電子產品之一,我們都經常會使用到電腦。但是如果電腦在一段時間后不使用,電腦就會自動進入休眠狀態,而在進入休眠狀態的之后,只有當我們將電腦喚醒了,電腦才能夠回到菜單界面當中…

python爬蟲爬取音樂單曲_Python爬取qq音樂的過程實例

一、前言qq music上的音樂還是不少的,有些時候想要下載好聽的音樂,但有每次在網頁下載都是煩人的登錄什么的。于是,來了個qqmusic的爬蟲。至少我覺得for循環爬蟲,最核心的應該就是找到待爬元素所在url吧。二、Python爬取QQ音樂單曲…

python按照日期篩選數據_日期時間范圍上的Python篩選器?

我有一些包含開始時間和結束時間的數據(datetime格式),我想根據更受限制的日期范圍計算持續時間(以小時為單位)。但到目前為止,我還沒有成功。(對python還是個業余愛好者。) 示例&am…

計算機2級u盤作弊,一種帶LED指示燈的計算機考試防U盤作弊裝置制造方法及圖紙...

【技術實現步驟摘要】一種帶LED指示燈的計算機考試防U盤作弊裝置本申請是申請日為2016年4月1日,申請號為2016102009851,專利技術名稱為“一種防U盤舞弊的計算機考試裝置”的專利技術專利的分案申請。本專利技術涉及一種防止計算機考試抄襲作弊的裝置&…

python類定義的講解_python面向對象、自定義類等使用實例講解

python 面向對象相對別的語言來說缺少兩個功能: 1、python不具備重載,重載是指在同一個類中,使得方法有相同的名稱,但是有不同的參數列表,但由于python函數具有強大的參數處理功能,因此這不是一個問題。 2、…

ubutun 更換網絡源_「ubuntu腳本1」開啟ssh替換第三方源開啟tab鍵補齊屏蔽nouveau

Ubuntu初始化腳本,安裝顯卡驅動專用初始化腳本替換apt源為國內清華源,增加docker-ce國內源開啟tab鍵補齊桌面版開啟ssh僅支持Ubuntu16/18桌面版安裝gcc make屏蔽nouveau 自動重啟服務器生效#!/bin/bash #檢測網絡是否通暢 ping -w 5 qq.com || { echo "網絡異常,腳本終止&…

地理信息系統軟件測試培訓,地理信息系統軟件測試方法技術方案

本發明專利技術涉及一種軟件測試方法。更具體地說,本發明專利技術涉及一種地理信息系統軟件測試方法,包括:編寫測試用例文檔并腳本化形成測試腳本;結合路徑分析方法設置測試用例,按照測試用例配套至少一組測試原始數據…

matlab meshgrid函數_matlab入門(三)圖像可視化

matlab圖像可視化基本要求(1)掌握圖形窗口的創建與控制,以及圖形窗口的基本操作;(2)熟練掌握二維和三維繪圖基本的命令、線型控制;(3)初步掌握用特殊的圖形來表現特殊數據的性質,如面積圖、直方 圖、餅圖等。(4)掌握坐標軸的控制和…