国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

擴展點都不知道不要說你用了Spring Boot

這篇具有很好參考價值的文章主要介紹了擴展點都不知道不要說你用了Spring Boot。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前言

哈哈,本次有點標題黨的嫌疑了,話又說回來,如果只停留在Spring Boot的基本的CRUD層面,未免也太過局限了,當需要去擴展一些功能,寫一些組件的時候,就感覺無從下手了,所以本次,我們從一個標題黨開始,了解一下Spring Boot 的擴展點,可以系統的了解記憶一下,此文不是八股文,希望大家能學以致用。

Spring Boot是一個基于Spring框架的快速開發(fā)框架,做java開發(fā)的同學基本上都使用過,它通過提供一系列的自動配置和快速開發(fā)的特性,幫助我們快速搭建和開發(fā)高效、可擴展的應用程序。然而,為了滿足不同開發(fā)需求的多樣性,Spring Boot也提供了豐富的擴展點,開發(fā)人員可以通過擴展點來實現自定義的應用程序功能和行為。本文將介紹Spring Boot的擴展點分類和特點,幫助大家更好地理解和應用Spring Boot的擴展點。無論您是初學者還是有一定經驗的開發(fā)人員,本文都將為您提供一些有用的信息和思路,幫助您更好地使用Spring Boot。
擴展點都不知道不要說你用了Spring Boot,Spring boot 核心源碼淺析系列,spring boot,java,后端,微服務

冰點出品,必屬精品


1.擴展點

根據Spring Boot官方文檔,可以將Spring Boot的擴展點分為以下幾類:
這里面的每一類都事

1.1. 應用程序生命周期擴展點

應用程序生命周期擴展點是指在Spring Boot應用程序的生命周期中,提供了一系列的擴展點,開發(fā)人員可以通過實現這些擴展點來對應用程序的生命周期進行控制和定制。這些擴展點主要包括以下幾個:
擴展點都不知道不要說你用了Spring Boot,Spring boot 核心源碼淺析系列,spring boot,java,后端,微服務
此圖來自網絡

1.1.1 SpringApplicationRunListener

它是一個監(jiān)聽器接口,用于在Spring應用程序的運行生命周期中監(jiān)聽和響應相關事件??梢酝ㄟ^實現該接口來自定義應用程序的啟動和關閉行為。

1.1.2 ApplicationEnvironmentPreparedEvent

該事件在應用程序啟動前觸發(fā),用于在環(huán)境準備階段執(zhí)行一些操作,例如:加載配置文件、設置系統屬性等。

1.1.3 ApplicationPreparedEvent

該事件在應用程序上下文創(chuàng)建完成后觸發(fā),用于在應用程序準備階段執(zhí)行一些操作,例如:創(chuàng)建和初始化Bean等。

1.1.4 ApplicationStartedEvent

該事件在應用程序啟動完成后觸發(fā),用于在應用程序啟動后執(zhí)行一些操作,例如:向日志中輸出啟動信息等。

1.1.5 ApplicationReadyEvent

該事件在應用程序準備就緒后觸發(fā),用于在應用程序運行期間執(zhí)行一些操作,例如:啟動定時任務、初始化緩存等。

1.1.6 ApplicationFailedEvent

該事件在應用程序啟動失敗后觸發(fā),用于在應用程序啟動失敗時執(zhí)行一些操作,例如:記錄日志、發(fā)送告警等。


1.2. 容器擴展點

我們來先看一張圖,大概了解一下。Spring Boot容器擴展點主要用于自定義Spring容器的創(chuàng)建和配置,提供了一種靈活的方式來增強和定制Spring容器的功能,進而實現應用程序的定制化需求。
擴展點都不知道不要說你用了Spring Boot,Spring boot 核心源碼淺析系列,spring boot,java,后端,微服務
此圖來自網絡

Spring Boot的容器擴展點主要用于自定義Spring容器的創(chuàng)建和配置,通過這些擴展點,開發(fā)人員可以對Spring容器進行更加細粒度的控制和定制,以滿足特定的應用場景和需求。具體來說,容器擴展點的作用包括:

  1. 修改Bean的定義信息
    BeanFactoryPostProcessor和BeanDefinitionRegistryPostProcessor接口可以在Spring容器實例化Bean之前或之后修改Bean的定義信息,例如:修改Bean的屬性值、增加或刪除Bean的定義等。這些擴展點可以讓開發(fā)人員在Bean實例化之前或之后對Bean的定義進行修改,以滿足特定的需求。

  2. 修改Bean的屬性值或執(zhí)行其他操作
    BeanPostProcessor接口可以在Spring容器實例化Bean后修改Bean的屬性值或執(zhí)行其他操作,例如:修改Bean的屬性值、添加Bean的初始化方法等。這些擴展點可以讓開發(fā)人員在Bean實例化后對Bean的屬性值進行修改或執(zhí)行其他操作,以滿足特定的需求。

  3. 自定義Bean的創(chuàng)建、配置、解析等
    通過實現BeanFactoryPostProcessor和BeanPostProcessor接口,開發(fā)人員可以自定義Bean的創(chuàng)建、配置和解析等過程,以滿足特定的需求。例如,可以自定義BeanFactoryPostProcessor接口來修改Bean定義信息,自定義BeanPostProcessor接口來修改Bean的屬性值或執(zhí)行其他操作。

1.2.1 BeanFactoryPostProcessor

  • 用于在Spring容器實例化Bean之前修改Bean的定義信息。通過實現該接口,開發(fā)人員可以自定義Bean的配置和解析,例如:修改Bean的屬性值、增加或刪除Bean的定義等。這種方式可以在Spring容器實例化Bean之前對Bean的定義進行修改,從而實現更加靈活的配置和定制。

1.2.2 BeanPostProcessor

_ 用于在Spring容器實例化Bean后修改Bean的屬性值或執(zhí)行其他操作。通過實現該接口,開發(fā)人員可以自定義Bean的初始化邏輯,例如:修改Bean的屬性值、添加Bean的初始化方法等。這種方式可以在Spring容器實例化Bean之后對Bean的屬性值進行修改,從而實現更加靈活的初始化邏輯。_

1.2.3 BeanDefinitionRegistryPostProcessor

BeanDefinitionRegistryPostProcessor繼承自BeanFactoryPostProcessor,用于在Spring容器實例化Bean定義之前修改Bean定義信息。通過實現該接口,開發(fā)人員可以自定義Bean的創(chuàng)建和解析邏輯,例如:修改Bean的屬性值、增加或刪除Bean的定義等。這種方式可以在Spring容器實例化Bean定義之前對Bean定義進行修改,從而實現更加靈活的配置和定制。


1.3. 自動配置擴展點

擴展點都不知道不要說你用了Spring Boot,Spring boot 核心源碼淺析系列,spring boot,java,后端,微服務

Spring Boot提供了多種自動配置擴展點,通過這些擴展點可以實現自動配置類的選擇、條件篩選等功能。以下是幾個常用的自動配置擴展點:

1.3.1 AutoConfigurationImportSelector

AutoConfigurationImportSelector是一個接口,用于實現自動配置類的選擇邏輯。在Spring Boot應用程序啟動時,會自動加載AutoConfigurationImportSelector接口的實現類,實現類會根據條件進行篩選,選擇符合條件的自動配置類并加載。

1.3.2 EnableAutoConfiguration

EnableAutoConfiguration是一個注解,用于開啟自動配置功能。在應用程序中添加該注解后,Spring Boot會自動加載符合條件的自動配置類,實現自動配置的功能。該注解可以通過exclude屬性排除一些自動配置類,也可以通過excludeName屬性排除一些自動配置類的名稱。

1.3.3 ConditionalOnClass

ConditionalOnClass是一個注解,用于在類路徑中存在指定的類時才會加載自動配置類或Bean。可以使用該注解來檢查類的可用性,如果類存在,則加載自動配置類或Bean,否則跳過。

1.3.4 ConditionalOnBean

ConditionalOnBean是一個注解,用于在容器中存在指定的Bean時才會加載自動配置類或Bean??梢允褂迷撟⒔鈦頇z查Bean的可用性,如果Bean存在,則加載自動配置類或Bean,否則跳過。

1.3.5 ConditionalOnMissingBean

ConditionalOnMissingBean是一個注解,用于在容器中不存在指定的Bean時才會加載自動配置類或Bean。可以使用該注解來檢查Bean的可用性,如果Bean不存在,則加載自動配置類或Bean,否則跳過。

這些自動配置擴展點可以幫助開發(fā)人員實現自動配置類的選擇、條件篩選等功能,從而實現更加靈活、可擴展的應用程序。通過使用這些擴展點,開發(fā)人員可以自定義自動配置的功能和條件,以滿足特定的需求。


1.4. Web擴展點

Spring Boot提供了多種擴展點用于自定義Web應用程序的配置和行為。其中,以下四個擴展點用于處理Web請求和響應相關的操作:

1.4.1 WebMvcConfigurer

WebMvcConfigurer是一個接口,用于自定義Spring MVC的配置。通過實現該接口,可以添加攔截器、消息轉換器等,以滿足特定的需求。例如,可以添加攔截器來驗證請求的安全性,或者添加消息轉換器來支持自定義的數據格式。

1.4.2 HandlerInterceptor

HandlerInterceptor是一個接口,用于自定義攔截器。攔截器可以在請求處理前或處理后執(zhí)行自定義的邏輯,例如:驗證用戶權限、記錄請求日志等。通過實現該接口,可以實現自定義的攔截器,以滿足特定的需求。

1.4.3 HandlerMethodArgumentResolver

HandlerMethodArgumentResolver是一個接口,用于自定義請求參數解析器。在處理請求時,Spring會將請求中的參數解析為對應的Java對象。通過實現該接口,可以自定義請求參數解析器,以支持自定義的參數類型或數據格式。

1.4.4 HandlerMethodReturnValueHandler

HandlerMethodReturnValueHandler是一個接口,用于自定義請求返回值處理器。在處理請求時,Spring會將Java對象轉換為響應結果并返回給客戶端。通過實現該接口,可以自定義請求返回值處理器,以支持自定義的數據格式或響應結果。

總之,這些擴展點可以幫助開發(fā)人員自定義Web應用程序的配置和行為,以滿足特定的需求。通過實現這些擴展點,可以添加攔截器、消息轉換器等,實現自定義的請求參數解析器和返回值處理器,從而實現更加靈活、可擴展的Web應用程序。


1.5. 數據庫擴展點

Spring Boot提供了多種數據訪問相關的擴展點,以下是幾個常用的擴展點:

1.5.1 DataSource

DataSource是一個接口,用于定義數據源的配置信息。數據源是應用程序與數據庫之間的連接池,通過數據源可以配置數據庫驅動、連接池大小等屬性,與數據庫建立連接。

1.5.2 TransactionManager

TransactionManager是一個接口,用于定義事務管理器的配置信息。事務管理器用于管理應用程序中的事務,例如:事務隔離級別、超時時間等。通過實現TransactionManager接口,可以自定義事務管理器的配置信息,以滿足特定的需求。

1.5.3 JdbcTemplate

JdbcTemplate是Spring提供的數據訪問模板,用于簡化JDBC操作。通過JdbcTemplate,可以更加方便地進行數據庫操作,例如:執(zhí)行SQL語句、執(zhí)行存儲過程等。JdbcTemplate封裝了大量的JDBC操作,提供了更加簡單、易用的API,可以大大提高開發(fā)效率。

1.5.4 JpaVendorAdapter

JpaVendorAdapter是一個接口,用于定義JPA廠商適配器的配置信息。JPA廠商適配器用于適配不同的JPA實現,例如:Hibernate、EclipseLink等。通過實現JpaVendorAdapter接口,可以自定義JPA廠商適配器的配置信息,例如:數據庫方言、JPA實現等。


1.6. 安全擴展點

Spring Boot提供了多種安全相關的擴展點 我們基本上用的很少,大家只需要了解一下。后續(xù)我會從這個里面挑選兩個,寫個項目真實使用的示例,供大家參考。

安全擴展點可以幫助開發(fā)人員實現更加靈活、可擴展的安全功能,從而滿足特定的需求。通過使用這些擴展點,可以自定義Spring Security的配置信息、Web應用程序的安全配置信息,以及自定義用戶認證方式、用戶信息獲取方式等,以實現更加定制化的安全功能。

1.6.1 SecurityConfigurerAdapter

SecurityConfigurerAdapter是一個類,用于定義Spring Security的配置信息。通過繼承該類,可以實現用戶認證和授權、添加安全過濾器等功能。SecurityConfigurerAdapter提供了一系列的方法,用于配置Spring Security的不同方面,例如:配置用戶認證、授權、添加過濾器等。

1.6.2 WebSecurityConfigurerAdapter

WebSecurityConfigurerAdapter是一個類,用于定義Web應用程序的安全配置信息。通過繼承該類,可以實現定義安全規(guī)則、設置用戶認證和授權等功能。WebSecurityConfigurerAdapter提供了一系列的方法,用于配置Web應用程序的安全性,例如:配置HTTP安全規(guī)則、配置表單登錄、配置用戶認證等。

1.6.3 AuthenticationProvider

AuthenticationProvider是一個接口,用于自定義用戶認證方式。通過實現該接口,可以實現自定義的用戶名和密碼認證方式、OAuth2認證方式等。AuthenticationProvider提供了一系列的方法,用于實現用戶認證的不同方面,例如:驗證用戶密碼、獲取用戶權限等。

1.6.4 UserDetailsService

UserDetailsService是一個接口,用于自定義用戶信息獲取方式。通過實現該接口,可以從數據庫或其他數據源中獲取用戶信息。UserDetailsService提供了一個方法,用于根據用戶名獲取用戶信息,開發(fā)人員可以根據實際需求進行自定義實現。


1.7. 其他擴展點

下面這些擴展點不知道怎么歸類,有點雜,我們暫且歸類為其他擴展點吧,但是都是比較常用的一些擴展點??梢詭椭_發(fā)人員實現更加靈活、可擴展的應用程序功能,從而滿足特定的需求。通過使用這些擴展點,可以自定義命令行操作、命令行參數處理方式、嵌入式Servlet容器的配置信息、健康檢查指標以及異常處理方式等,以實現更加定制化的應用程序功能。

1.7.1 CommandLineRunner

CommandLineRunner是一個接口,用于在Spring Boot應用程序啟動后執(zhí)行一些命令行操作。例如:初始化數據、啟動定時任務等。通過實現CommandLineRunner接口,可以自定義需要執(zhí)行的命令行操作。

1.7.2 ApplicationRunner

ApplicationRunner是一個接口,與CommandLineRunner類似,也用于在Spring Boot應用程序啟動后執(zhí)行一些命令行操作。但其提供了更靈活的參數處理方式,可以接收一個ApplicationArguments對象,從而更加方便地處理命令行參數。

1.7.3 CommandLinePropertySource

CommandLinePropertySource是一個接口,用于將命令行參數轉換為Spring環(huán)境中的屬性值。例如:將命令行參數–server.port=8080轉換為spring.server.port=8080的屬性值。通過實現CommandLinePropertySource接口,可以自定義命令行參數的處理方式,以滿足特定的需求。

1.7.4 EmbeddedServletContainerCustomizer

EmbeddedServletContainerCustomizer是一個接口,用于自定義嵌入式Servlet容器的配置信息。例如:自定義端口號、設置SSL證書等。通過實現EmbeddedServletContainerCustomizer接口,可以實現嵌入式Servlet容器的自定義配置。

1.7.5 HealthIndicator

HealthIndicator是一個接口,用于定義應用程序的健康檢查指標。例如:檢查數據庫連接是否正常、檢查磁盤使用情況等。通過實現HealthIndicator接口,可以自定義應用程序的健康檢查指標,以便及時發(fā)現和解決應用程序的問題。

1.7.6 ErrorController

ErrorController是一個接口,用于自定義應用程序的異常處理方式。例如:自定義404頁面、重定向到錯誤頁面等。通過實現ErrorController接口,可以自定義應用程序的異常處理方式,以提高用戶的體驗。

2. 參考文檔

  1. Spring Boot官方文檔:https://spring.io/projects/spring-boot
  2. Spring Boot Reference Guide:https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/
  3. Spring Boot官方文檔相關 https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-customizing-bean-definitions
  4. Spring Boot 自動配置 https://docs.spring.io/spring-boot/docs/3.1.2/reference/html/auto-configuration-classes.html#appendix.auto-configuration-classes

擴展點都不知道不要說你用了Spring Boot,Spring boot 核心源碼淺析系列,spring boot,java,后端,微服務

??好了,本次的Spring Boot 的擴展點分享就到這兒,我是冰點,下次見。如果我的文章對你有所收獲,可以給個贊。如果有疑問可以在評論區(qū)留言。
擴展點都不知道不要說你用了Spring Boot,Spring boot 核心源碼淺析系列,spring boot,java,后端,微服務文章來源地址http://www.zghlxwxcb.cn/news/detail-607451.html

到了這里,關于擴展點都不知道不要說你用了Spring Boot的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 媲美ChatGPT的Bard你用了嗎,看起來還不錯!

    媲美ChatGPT的Bard你用了嗎,看起來還不錯!

    在這個技術日新月異的時代,人工智能已成為我們生活中不可或缺的一部分。聊天機器人,以其獨特的表現形式,備受人們追捧。在這里,筆者要向大家推薦幾個不錯的聊天機器人網站,其中包括Google Bard??纯此约涸趺茨7履澄恍≌f家介紹的—— Google Bard:網絡盲道的“

    2024年02月15日
    瀏覽(24)
  • 【Spring Boot學習】日志文件,Spring Boot也會寫日記了,這些事你知道嘛 ? ? ?

    【Spring Boot學習】日志文件,Spring Boot也會寫日記了,這些事你知道嘛 ? ? ?

    前言: 大家好,我是 良辰丫 ,在上一篇文章中我們已經學習了Spring Boot的配置,接下來我們要學習一些日志相關的東西,什么是日志呢?我們慢慢往下看.?????? ??個人主頁:良辰針不戳 ??所屬專欄:javaEE進階篇之框架學習 ??勵志語句:生活也許會讓我們遍體鱗傷,但最終這些

    2024年02月08日
    瀏覽(36)
  • Spring Boot 啟動擴展點深入解析

    Spring Boot以其“約定優(yōu)于配置”的理念和簡潔的自動配置機制,極大地簡化了Spring應用的初始化和開發(fā)過程。然而,在某些特定場景下,我們可能需要對Spring Boot的啟動過程進行定制或擴展。這時,了解Spring Boot的啟動擴展點就顯得尤為重要。 來自:gwzkb.com 來自:dlanye.com Spring

    2024年04月08日
    瀏覽(28)
  • 4個很多人都不知道的現代JavaScript技巧

    4個很多人都不知道的現代JavaScript技巧

    JavaScript在不斷的進化和升級,越來越多的新特性讓我們的代碼變得更加簡潔。因此,今天這篇文章,我將跟大家分享 4 個不常用的 JavaScript 運算符。讓我們一起研究它們。 1.可選的鏈接運算符 這個功能非常好用,它可以防止我的代碼出錯,甚至可以大大簡化它。 例如,我們

    2024年02月02日
    瀏覽(28)
  • 別人都不知道的“好用”網站,讓你的效率飛快

    別人都不知道的“好用”網站,讓你的效率飛快

    ???個人主頁:程序猿追 ???系列專欄:【日常學習上的分享】 ???目前狀態(tài):創(chuàng)建Java學習之路(零基礎到就業(yè)實戰(zhàn))系列,目前更新到JAVAWEB開發(fā) ???作者簡介:大家好,我是程序猿追,全棧領域新星創(chuàng)作者,算法愛好者,常在作者周榜排名前30,某不知名的 ACMer ???

    2024年02月10日
    瀏覽(47)
  • Spring Boot 應用程序生命周期擴展點妙用

    Spring Boot 應用程序生命周期擴展點妙用

    上一篇我們著重按照分類講解了一下Spring Boot的常見擴展點,接下來我們講解一下Spring Boot 的應用程序生命周期擴展點的一些妙用。 Spring Boot的應用程序生命周期擴展點是一些接口,可以讓開發(fā)者在應用程序的不同生命周期階段插入自己的邏輯。這些擴展點可以幫助開發(fā)者在

    2024年02月15日
    瀏覽(18)
  • 面試被打臉,數據結構底層都不知道么--回去等通知吧

    面試被打臉,數據結構底層都不知道么--回去等通知吧

    數據結構之常見的8種數據結構: -數組Array -鏈表 Linked List -堆 heap -棧 stack -隊列 Queue -樹 Tree -散列表 Hash -圖 Graph 數據結構-鏈表篇 Linklist定義: -是一種線性表,并不會按線性的順序存儲數據,即邏輯上相鄰,物理上不一定相鄰的元素。通過指針域來尋找對應的元素。 Linkli

    2024年02月10日
    瀏覽(23)
  • 2023面試被打臉,數據結構底層都不知道么--回去等通知吧

    2023面試被打臉,數據結構底層都不知道么--回去等通知吧

    數據結構之常見的8種數據結構: -數組Array -鏈表 Linked List -堆 heap -棧 stack -隊列 Queue -樹 Tree -散列表 Hash -圖 Graph 數據結構-鏈表篇 Linklist定義: -是一種線性表,并不會按線性的順序存儲數據,即邏輯上相鄰,物理上不一定相鄰的元素。通過指針域來尋找對應的元素。 Linkli

    2024年02月10日
    瀏覽(20)
  • 百分之80新手都不知道,SEO搜索引擎優(yōu)化【sitemap網站地圖 配置】

    百分之80新手都不知道,SEO搜索引擎優(yōu)化【sitemap網站地圖 配置】

    Sitemap 可方便網站管理員通知搜索引擎他們網站上有哪些可供抓取的網頁。最簡單的 Sitemap 形式,就是XML 文件,在其中列出網站中的網址以及關于每個網址的其他元數據(上次更新的時間、更改的頻率以及相對于網站上其他網址的重要程度為何等),以便搜索引擎可以更加智

    2023年04月09日
    瀏覽(45)
  • “深入了解Spring Boot:構建高效、可擴展的Java應用程序“

    標題:深入了解Spring Boot:構建高效、可擴展的Java應用程序 摘要:Spring Boot是一款快速構建Java應用程序的開發(fā)框架,它基于Spring框架,提供了一系列的自動化配置和約定,使得開發(fā)者能夠更快速、更高效地構建出高質量的應用程序。本文將深入探討Spring Boot的核心特性和使用

    2024年02月14日
    瀏覽(31)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包