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

Spring中BeanFactory接口的作用小結(jié)

 更新時間:2025年09月22日 09:15:59   作者:FromZero2One  
BeanFactory是Spring IOC核心接口,負(fù)責(zé)管理Bean的實例化、配置與生命周期,通過配置類構(gòu)建BeanDefinition,注冊并解析注解,實現(xiàn)依賴注入,確保Bean正確加載與管理,本文就來詳細(xì)介紹一下,感興趣的可以了解一下

BeanFactory是Spring IOC的最核心與最底層的接口,它負(fù)責(zé)實例化、配置和管理應(yīng)用程序中的對象(這些對象被稱為 Bean)。可以將它理解為一個高級的、可配置的對象工廠,它的主要工作就是生產(chǎn)和管理 Bean。

1.準(zhǔn)備配置類

 @Configuration
    static class Config{
        @Bean
        public Bean1 bean1(){
            return new Bean1();
        }
        @Bean
        public Bean2 bean2(){
            return new Bean2();
        }

    }
    static class Bean1{
        private static final Logger log = LoggerFactory.getLogger(Bean1.class);
        public Bean1(){
            log.debug("構(gòu)造bean1");
        }
       /* @Autowired
        private Bean2 bean2;
        public Bean2 getBean2(){
            return bean2;
        }*/

    }
    static class Bean2{
        private static final Logger log = LoggerFactory.getLogger(Bean2.class);
        public Bean2(){
            log.debug("構(gòu)造 Bean2()");
        }
    }

2.beanFactory實現(xiàn)注入

public class TestBeanFactory {
    public static void main(String[] args) {
        DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
        //bean的定義(class,scope,初始化,銷毀)
        AbstractBeanDefinition beanDefinition = BeanDefinitionBuilder.genericBeanDefinition(Config.class).setScope("singleton").getBeanDefinition();
        beanFactory.registerBeanDefinition("config",beanDefinition);
      
        for(String name:beanFactory.getBeanDefinitionNames()){
            System.out.println(name);
        }
    }

首先使用BeanDefinitionBuilder為bean對象構(gòu)造beanDefinition對象,beanFactory把這些bean的定義收集起來并注冊管理。

3.打印對象

打印的對象只有Config,但是里面的@Bean注入的對象并沒有生效。

4.配置beanFactory后處理器

通過配置beanFactory的后處理器,可以解析配置類里面注解配置的類并注入到BeanFactory工廠里面。

 public static void main(String[] args) {
        DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
        //bean的定義(class,scope,初始化,銷毀)
        AbstractBeanDefinition beanDefinition = BeanDefinitionBuilder.genericBeanDefinition(Config.class).setScope("singleton").getBeanDefinition();
        beanFactory.registerBeanDefinition("config",beanDefinition);
        //給BeanFactory一些常用的后處理器
        AnnotationConfigUtils.registerAnnotationConfigProcessors(beanFactory);
        //BeanFactory后處理器主要功能是補(bǔ)充一些bean的定義
        beanFactory.getBeansOfType(BeanFactoryPostProcessor.class).values().stream().forEach(beanFactoryPostProcessor -> {
            beanFactoryPostProcessor.postProcessBeanFactory(beanFactory);
        });
        for(String name:beanFactory.getBeanDefinitionNames()){
            System.out.println(name);
        }
    }

其中通過AnnotationConfigUtils可以注入常用的beanFactory的后處理器, 

 AnnotationConfigUtils.registerAnnotationConfigProcessors(beanFactory);

處理之后的結(jié)果如下,其中包括了beanFactory的后處理器。

到此這篇關(guān)于Spring中BeanFactory接口的作用小結(jié)的文章就介紹到這了,更多相關(guān)Spring BeanFactory接口內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java中關(guān)于getProperties方法的使用

    java中關(guān)于getProperties方法的使用

    這篇文章主要介紹了java中關(guān)于getProperties方法的使用,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • SpringSecurityOAuth2實現(xiàn)微信授權(quán)登錄

    SpringSecurityOAuth2實現(xiàn)微信授權(quán)登錄

    微信的登錄功能是用戶注冊和使用微信的必經(jīng)之路之一,而微信授權(quán)登錄更是方便了用戶的登錄操作,本文主要介紹了SpringSecurityOAuth2實現(xiàn)微信授權(quán)登錄,感興趣的可以了解一下
    2023-09-09
  • SpringBoot中集成Swagger2及簡單實用

    SpringBoot中集成Swagger2及簡單實用

    使用Swagger你只需要按照它的規(guī)范去定義接口及接口相關(guān)的信息,再通過Swagger衍生出來的一系列項目和工具,就可以做到生成各種格式的接口文檔,以及在線接口調(diào)試頁面等等,這篇文章主要介紹了SpringBoot中集成Swagger2,需要的朋友可以參考下
    2023-06-06
  • 關(guān)于jvm的垃圾回收器以及觸發(fā)full gc的場景

    關(guān)于jvm的垃圾回收器以及觸發(fā)full gc的場景

    這篇文章主要介紹了關(guān)于jvm的垃圾回收器以及觸發(fā)full gc的場景,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • SpringCloud?Config之動態(tài)配置管理與高可用治理方式

    SpringCloud?Config之動態(tài)配置管理與高可用治理方式

    這篇文章主要介紹了SpringCloud?Config之動態(tài)配置管理與高可用治理方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-05-05
  • SpringBoot集成tika實現(xiàn)word轉(zhuǎn)html的操作代碼

    SpringBoot集成tika實現(xiàn)word轉(zhuǎn)html的操作代碼

    Tika是一個內(nèi)容分析工具,自帶全面的parser工具類,能解析基本所有常見格式的文件,得到文件的metadata,content等內(nèi)容,返回格式化信息,本文給大家介紹了SpringBoot集成tika實現(xiàn)word轉(zhuǎn)html的操作,需要的朋友可以參考下
    2024-06-06
  • java開發(fā)微信分享接口的步驟

    java開發(fā)微信分享接口的步驟

    這篇文章主要為大家詳細(xì)介紹了java開發(fā)微信分享接口的步驟,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • SpringBoot JdbcTemplate批量操作的示例代碼

    SpringBoot JdbcTemplate批量操作的示例代碼

    本篇文章主要介紹了SpringBoot JdbcTemplate批量操作的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • 解讀Java中Set真的是無序的嗎

    解讀Java中Set真的是無序的嗎

    這篇文章主要介紹了Java中Set是不是無序的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Java進(jìn)階之高并發(fā)核心Selector詳解

    Java進(jìn)階之高并發(fā)核心Selector詳解

    前幾篇文章介紹了Java高并發(fā)的一些基礎(chǔ)內(nèi)容,認(rèn)識了Channel,Buffer和Selector的基本用法,有了感性認(rèn)識之后,來看看Selector的底層是如何實現(xiàn)的。,需要的朋友可以參考下
    2021-05-05

最新評論