欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring容器中已經(jīng)存在的Bean替換示例

 更新時間:2022年06月27日 11:15:02   作者:huan1993  
這篇文章主要為大家介紹了Spring容器中已經(jīng)存在的Bean替換示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

一、背景

我們在開發(fā)的過程中,經(jīng)常會引入別人寫的jar包實現(xiàn)某些功能。而別人的jar包一般都自動注入Spring容器中,假設(shè)別人都是通過@Bean@Component注入的,并且沒有加入@ConditionalXXX等注解,導(dǎo)致自己無法替換掉別人的實現(xiàn),假設(shè)這個時候我就是想替換掉,那么該如何實現(xiàn)呢?

二、需求

由上圖可知,我們的需求為:

使用我們自己定義的 BananaProductService替換掉框架自帶的AppleProductService并加入到Spring容器中,同時保證全局只有一個ProductService的實現(xiàn)。

三、實現(xiàn)思路

我們在系統(tǒng)中根據(jù) @Bean或通過 @Component 定義的Bean對象在Spring中都會轉(zhuǎn)換成一個個的BeanDefinition對象,如果我們在Spring創(chuàng)建這些對象加入到Spring容器之前,將不想要的BeanDefinition對象刪除,而加入我們自己想要的BeanDefinition對象是不是就可以實現(xiàn)了?而Spring提供的BeanDefinitionRegistryPostProcessor接口正好可以幫助我們實現(xiàn)這個功能。

BeanDefinitionRegistryPostProcessor 是在系統(tǒng)加載完所有的BeanDefinition對象來進行回調(diào)。

四、實現(xiàn)步驟

1、模擬第三方j(luò)ar包實現(xiàn)并加入Spring容器中

2、自己提供一個實現(xiàn)

3、替換掉jar包默認的實現(xiàn)

4、進行測試

代碼地址

https://gitee.com/huan1993/spring-cloud-parent/tree/master/springboot/springboot-override-exists-bean

以上就是Spring容器中已經(jīng)存在的Bean替換示例的詳細內(nèi)容,更多關(guān)于Spring Bean容器替換的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java自定義數(shù)組列表的實現(xiàn)操作

    Java自定義數(shù)組列表的實現(xiàn)操作

    這篇文章主要介紹了Java自定義數(shù)組列表的實現(xiàn)操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • Java Vector類詳解及實例代碼

    Java Vector類詳解及實例代碼

    這篇文章主要介紹了Java Vector類詳解及實例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • springboot解決前后端分離時的跨域問題

    springboot解決前后端分離時的跨域問題

    這篇文章主要介紹了springboot如何解決前后端分離時的跨域問題,幫助大家更好的理解和學(xué)習(xí)使用springboot,感興趣的朋友可以了解下
    2021-04-04
  • 完美解決Logback configuration error detected的問題

    完美解決Logback configuration error detected的問題

    這篇文章主要介紹了完美解決Logback configuration error detected的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 深度解析Java中ArrayList的使用

    深度解析Java中ArrayList的使用

    ArrayList?類是一個可以動態(tài)修改的數(shù)組,與普通數(shù)組的區(qū)別就是它是沒有固定大小的限制,我們可以添加或刪除元素。本文將通過示例帶你深度解析Java中ArrayList的使用,需要的可以參考一下
    2022-09-09
  • java編譯器和JVM的區(qū)別

    java編譯器和JVM的區(qū)別

    在本篇文章里小編給大家整理的是一篇關(guān)于java編譯器和JVM的區(qū)別的相關(guān)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2020-12-12
  • 深度解析Java中的國際化底層類ResourceBundle

    深度解析Java中的國際化底層類ResourceBundle

    做項目應(yīng)該都會實現(xiàn)國際化,那么大家知道Java底層是如何實現(xiàn)國際化的嗎?這篇文章就來和大家深度解析一下Java中的國際化底層類ResourceBundle,希望對大家有所幫助
    2023-03-03
  • SpringBoot整合Swagger3生成接口文檔過程解析

    SpringBoot整合Swagger3生成接口文檔過程解析

    這篇文章主要介紹了SpringBoot整合Swagger3生成接口文檔過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-07-07
  • 基于Log4j2阻塞業(yè)務(wù)線程引發(fā)的思考

    基于Log4j2阻塞業(yè)務(wù)線程引發(fā)的思考

    這篇文章主要介紹了基于Log4j2阻塞業(yè)務(wù)線程引發(fā)的思考,基于很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • SpringBoot使用minio及配置代碼

    SpringBoot使用minio及配置代碼

    MinIO是一個非常輕量的服務(wù),可以很簡單的和其他應(yīng)用的結(jié)合,類似?NodeJS,?Redis?或者?MySQL。本文重點給大家介紹SpringBoot使用minio及配置代碼,感興趣的朋友一起看看吧
    2022-02-02

最新評論