網(wǎng)站做下載頁面軟文范例800字
目錄
- JavaWeb三大組件
- 依賴注入的方式
- @Autowire和@Resurce有什么區(qū)別?
- Spring Boot的優(yōu)點(diǎn)
- Spring IoC是什么?
- 說說Spring Aop的優(yōu)點(diǎn)
- @Component和@Bean的區(qū)別
- 自定義注解時(shí)使用的RetentionPolicy枚舉類有哪些值?
- 如何理解Spring的SPI機(jī)制?
- Spring Boot自動(dòng)裝配原理
- Spring MVC工作原理
JavaWeb三大組件
-
Servlet
:Servlet是JavaWeb應(yīng)用程序中處理請(qǐng)求和生成響應(yīng)的基本組件。它是一個(gè)Java類,通過實(shí)現(xiàn)或繼承Servlet接口來處理客戶端請(qǐng)求,并生成響應(yīng)數(shù)據(jù)。 -
Listener
:監(jiān)聽器用于監(jiān)聽Web應(yīng)用程序中的事件,并在事件發(fā)生時(shí)執(zhí)行相應(yīng)的邏輯處理。使用場(chǎng)景:
- 初始化
- 釋放資源
- 日志記錄
-
Filter
:過濾器用于在請(qǐng)求和響應(yīng)的處理過程中對(duì)數(shù)據(jù)進(jìn)行攔截和處理。一個(gè)請(qǐng)求可以經(jīng)過多個(gè)過濾器的處理,每個(gè)過濾器可以在請(qǐng)求的處理前后進(jìn)行操作和攔截。使用場(chǎng)景:
- 權(quán)限驗(yàn)證
- 請(qǐng)求轉(zhuǎn)發(fā)
- 日志記錄
- 字符編碼
總結(jié)而言
- Servlet程序用于處理請(qǐng)求和生成響應(yīng)數(shù)據(jù)
- Listener監(jiān)聽器用于監(jiān)聽特定的Web應(yīng)用程序事件執(zhí)行相應(yīng)邏輯
- Filter過濾器用于對(duì)請(qǐng)求和響應(yīng)數(shù)據(jù)進(jìn)行攔截和處理。
它們各自在Web應(yīng)用程序開發(fā)中具有重要的作用,能夠?qū)崿F(xiàn)靈活的請(qǐng)求處理、事件監(jiān)聽和數(shù)據(jù)過濾。
依賴注入的方式
在 Spring 中實(shí)現(xiàn)依賴注入的常見方式有以下 3 種:
- 屬性注入(Field Injection)
- @Autowire實(shí)現(xiàn)屬性注入
- @Resurce實(shí)現(xiàn)屬性注入
- Setter 注入(Setter Injection)
- 構(gòu)造方法注入(Constructor Injection)
@Autowire和@Resurce有什么區(qū)別?
-
autowire是Spring提供的;resource是J2EE提供的
-
resource默認(rèn)使用name裝配,當(dāng)找不到name時(shí),會(huì)按類型裝配
-
AutoWire默認(rèn)按類型裝配,如果要使用名稱裝配可以用@Qualifier結(jié)合使用
Spring Boot的優(yōu)點(diǎn)
-
開箱即用
通過在pom文件中添加相關(guān)依賴包,然后使用對(duì)應(yīng)注解來代替繁瑣的XML配置文件以管理對(duì)象的生命周期
-
約定優(yōu)于配置
約定優(yōu)于配置(convention over configuration),也稱作按約定編程,是一種軟件設(shè)計(jì)范式,旨在減少軟件開發(fā)人員需要的配置。
-
內(nèi)置tomcat
Spring IoC是什么?
IoC(Inversion of Control:控制反轉(zhuǎn)) 是一種設(shè)計(jì)思想,而不是一個(gè)具體的技術(shù)實(shí)現(xiàn),IoC 的思想就是將原本在程序中手動(dòng)創(chuàng)建對(duì)象的控制權(quán),交由 Spring 框架來管理。
-
為什么叫控制反轉(zhuǎn)?
控制:指的是對(duì)象創(chuàng)建(實(shí)例化、管理)的權(quán)力
反轉(zhuǎn):控制權(quán)交給外部環(huán)境(Spring 框架、IoC 容器) -
Spring IoC的實(shí)現(xiàn)機(jī)制:工廠模式+反射機(jī)制
說說Spring Aop的優(yōu)點(diǎn)
- 減少系統(tǒng)的重復(fù)代碼
- 降低模塊間的耦合度
- 封裝切面邏輯
@Component和@Bean的區(qū)別
-
@Component 注解用在類上,表明一個(gè)類會(huì)作為組件類,并告知Spring要為這個(gè)類創(chuàng)建bean,每個(gè)類對(duì)應(yīng)一個(gè) Bean。
-
@Bean 注解用在方法上,表示這個(gè)方法會(huì)返回一個(gè) Bean。
-
@Bean 注解更加靈活,相比@Component注解自定義性更強(qiáng)
自定義注解時(shí)使用的RetentionPolicy枚舉類有哪些值?
值 | 源代碼 | 類文件 | 虛擬機(jī) |
---|---|---|---|
SOURCE | ?? | ||
CLASS | ?? | ?? | |
RUNTIME | ?? | ?? | ?? |
當(dāng)值設(shè)為SOURCE
,只有源文件中可以看到注解
當(dāng)值設(shè)為CLASS
,可在源文件和編譯后的Class文件中可以看到注解
當(dāng)值設(shè)為RUNTIME
,不僅在源文件和編譯后的Class文件中可以看到注解,JVM還能通過反射機(jī)制獲取到注解
如何理解Spring的SPI機(jī)制?
- Java SPI
SPI 全稱 Service Provider Interface,是 Java提供的一套用來被第三方實(shí)現(xiàn)或者擴(kuò)展的接口,它可以用來啟用框架擴(kuò)展和替換組件。
SPI的作用就是為這些被擴(kuò)展的API 尋找服務(wù)實(shí)現(xiàn)。本質(zhì)是通過基于接口的 編程+策略模式+配置文件 實(shí)現(xiàn)動(dòng)態(tài)加載??梢詫?shí)現(xiàn) 解耦 (接口和實(shí)現(xiàn)分離),提高框架的 可拓展性(第三方可以自己實(shí)現(xiàn),達(dá)到插拔式的效果)。
- Spring SPI
Spring SPI對(duì) Java SPI 進(jìn)行了封裝增強(qiáng)。我們只需要在 META-INF/spring.factories
中配置接口/類/注解名,即可通過服務(wù)發(fā)現(xiàn)機(jī)制,在運(yùn)行時(shí)進(jìn)行自動(dòng)加載。
Spring Boot自動(dòng)裝配原理
Spring Boot自動(dòng)裝配如下圖所示:
Springboot項(xiàng)目的啟動(dòng)類需要由 @SpringBootApplication 注解修飾,該注解復(fù)合了如下三個(gè)注解。
-
@SpringBootConfiguration。表明Springboot啟動(dòng)類是一個(gè)配置類;
-
@ComponentScan。會(huì)將指定路徑下的被特定注解修飾的類加載為Spring中的Bean,這些特定注解為@Component,@Controller,@Service,@Repository和@Configuration注解;
-
@EnableAutoConfiguration。用于開啟Springboot的自動(dòng)裝配,該注解復(fù)合了如下兩個(gè)核心注解。
- @AutoConfigurationPackage。用于將啟動(dòng)類所在的包里面的所有組件注冊(cè)到spring容器。
- @Import(AutoConfigurationImportSelector.class)
-
自動(dòng)裝配流程說明(重要):
- @Import 將 AutoConfigurationImportSelector 注入到spring容器中
- AutoConfigurationImportSelector 通過 SpringFactoriesLoader 從類路徑下去讀取
META-INF/spring.factories
文件信息 - 此文件中有一個(gè)key為
org.springframework.boot.autoconfigure.EnableAutoConfiguration
,定義了一組需要自動(dòng)配置的bean
Spring MVC工作原理
Spring MVC 原理如下圖所示:
- 流程說明(重要):
- 客戶端(瀏覽器)發(fā)送請(qǐng)求, DispatcherServlet攔截請(qǐng)求。
- DispatcherServlet 根據(jù)請(qǐng)求信息調(diào)用 HandlerMapping 。HandlerMapping 根據(jù) URL 去匹配查找能處理的 Handler(也就是我們平常說的 Controller 控制器) ,并會(huì)將請(qǐng)求涉及到的攔截器和 Handler 一起封裝。
- DispatcherServlet 調(diào)用 HandlerAdapter適配器執(zhí)行 Handler 。
- Handler 完成對(duì)用戶請(qǐng)求的處理后,會(huì)返回一個(gè) ModelAndView 對(duì)象給DispatcherServlet,ModelAndView 顧名思義,包含了數(shù)據(jù)模型以及相應(yīng)的視圖的信息。Model 是返回的數(shù)據(jù)對(duì)象,View 是個(gè)邏輯上的 View。
- ViewResolver 會(huì)根據(jù)邏輯 View 查找實(shí)際的 View。
- DispaterServlet 把返回的 Model 傳給 View(視圖渲染)。
- 把 View 返回給請(qǐng)求者(瀏覽器)