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

Spring擴展點之BeanFactoryPostProcessor詳解

 更新時間:2023年11月24日 08:57:00   作者:扛麻袋的少年  
這篇文章主要介紹了Spring擴展點之BeanFactoryPostProcessor詳解,Spring的設(shè)計非常優(yōu)雅,有很多的擴展點供我們對項目進行擴展,今天學(xué)習(xí)一下Spring其中擴展點之一的BeanFactoryPostProcessor,需要的朋友可以參考下

BeanFactoryPostProcessor

即:BeanFactory后置處理器,是實現(xiàn)Spring容器功能擴展的又一重要接口。它是對 BeanDefinition對象進行屬性相關(guān)的修改。

例如:修改bean屬性值,實現(xiàn)bean動態(tài)代理等。很多框架都是通過此接口實現(xiàn)對spring容器的擴展,例如mybatis與spring集成時,只定義了mapper接口,無實現(xiàn)類,但spring卻可以完成自動注入,是不是很神奇? 本文將通過簡單的例子,展現(xiàn)BeanFactoryPostProcessor的擴展能力。

說明:BeanDefinition對象,即:Bean定義對象,里面存儲著Bean標(biāo)簽的所有信息,Spring就是通過BeanDefintion對象來生成最終的Bean實例。

執(zhí)行時機

所有的bean定義信息,已經(jīng)被加載到IOC容器中,bean實例還沒有被初始化時,BeanFactoryPostProcessor被調(diào)用。

即:在bean定義已解決被加載到IOC容器中,還沒有初始化之前,我們可以悄悄的往容器中添加一些東西,進行一些小動作的修改。

使用

/**
 * TODO 自定義BeanFactoryPostProcessor
 *      執(zhí)行時間:所有的Bean定義信息已經(jīng)加載到容器中,但是Bean實例還沒有被初始化.
 *
 * @author : lzb
 * @date: 2021-03-15 17:42
 */
public class MyBeanFactoryPostProcessor implements BeanFactoryPostProcessor {

    @Override
    public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
        System.out.println("IOC 容器調(diào)用了MyBeanFactoryPostProcessor中重寫的postProcessBeanFactory方法");
        for(String name:beanFactory.getBeanDefinitionNames()) {
            if("person".equals(name)) {
                System.out.println("將Person對象設(shè)置為懶加載");
                BeanDefinition beanDefinition = beanFactory.getBeanDefinition(name);
                beanDefinition.setLazyInit(true);
            }
        }
    }
}

使其生效,有如下兩種方式:

方式一

使用@Configuration + @Bean 方式初始化

/**
 * 定義一個主配置類,標(biāo)識為@Configuration,通過@Bean方式初始化,注入IOC容器
 */
@Configuration
public class MainConfig {

	@Bean
	public MyBeanFactoryPostProcessor myBeanFactoryPostProcessor  () {
		return new MyBeanFactoryPostProcessor();
	}
}

方式二

使用@ComponentScan + @Component方式初始化

/**
 * 使用@ComponentScan定義組件掃描包范圍,在可掃描的保范圍內(nèi),
 * 然后使用@Component方式,將其定義為一個組件初始化,注入IOC容器
 */
@Component
public class MyBeanFactoryPostProcessor implements BeanFactoryPostProcessor {

    @Override
    public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
        System.out.println("IOC 容器調(diào)用了MyBeanFactoryPostProcessor中重寫的postProcessBeanFactory方法");
		// 獲取Bean定義名稱,進行遍歷
        for(String name:beanFactory.getBeanDefinitionNames()) {
			// 如果是person對象
            if("person".equals(name)) { 
                System.out.println("將Person對象設(shè)置為懶加載");
                // 獲取person的BeanDefinition(Bean定義對象)
                BeanDefinition beanDefinition = beanFactory.getBeanDefinition(name); 
                // 將Person對象設(shè)置為懶加載
                beanDefinition.setLazyInit(true);   
            }
        }
    }
}

執(zhí)行結(jié)果

在這里插入圖片描述

到此這篇關(guān)于Spring擴展點之BeanFactoryPostProcessor詳解的文章就介紹到這了,更多相關(guān)BeanFactoryPostProcessor詳解內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot瘦身打包部署的實現(xiàn)

    SpringBoot瘦身打包部署的實現(xiàn)

    這篇文章主要介紹了SpringBoot瘦身打包部署的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • Java數(shù)據(jù)結(jié)構(gòu)之AC自動機算法的實現(xiàn)

    Java數(shù)據(jù)結(jié)構(gòu)之AC自動機算法的實現(xiàn)

    AC自動機算法常被認(rèn)為是Trie樹+KMP算法的結(jié)合體,它是一個多模式匹配算法,在模式匹配領(lǐng)域被廣泛應(yīng)用。本文將詳細(xì)為大家介紹AC自動機的原理與實現(xiàn)方法,感興趣的可以了解一下
    2022-12-12
  • 詳解SpringBoot是如何整合JPA的

    詳解SpringBoot是如何整合JPA的

    借助于開發(fā)框架,我們已經(jīng)不用編寫原始的訪問數(shù)據(jù)庫的代碼,也不用調(diào)用JDBC或者連接池等諸如此類的被稱作底層的代碼,我們將從更高的層次上訪問數(shù)據(jù)庫,本章我們將詳細(xì)介紹在Springboot中使用 Spring Data JPA 來實現(xiàn)對數(shù)據(jù)庫的操作,需要的朋友可以參考下
    2021-06-06
  • Springboot死信隊列?DLX?配置和使用思路分析

    Springboot死信隊列?DLX?配置和使用思路分析

    死信隊列簡稱就是DLX,死信交換機和死信隊列和普通的沒有區(qū)別,當(dāng)消息成為死信后,如果該隊列綁定了死信交換機,則消息會被死信交換機重新路由到死信隊列,本文給大家介紹Springboot死信隊列?DLX的相關(guān)知識,感興趣的朋友一起看看吧
    2022-03-03
  • Java并發(fā)之AQS與自旋鎖詳解

    Java并發(fā)之AQS與自旋鎖詳解

    這篇文章主要介紹了Java并發(fā)之AQS與自旋鎖詳解,類如其名,抽象的隊列式的同步器,AQS定義了一套多線程訪問共享資源的同步器框架,許多同步類實現(xiàn)都依賴于它,如常用的ReentrantLock/Semaphore/CountDownLatch,需要的朋友可以參考下
    2023-10-10
  • MapTask工作機制圖文詳解

    MapTask工作機制圖文詳解

    今天小編就為大家分享一篇關(guān)于MapTask工作機制圖文詳解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • 最新評論