最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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后處理器主要功能是補充一些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九九乘法表示例

    java九九乘法表示例

    這篇文章主要介紹了java九九乘法表示例,需要的朋友可以參考下
    2014-04-04
  • 詳解Java如何簡化條件表達式

    詳解Java如何簡化條件表達式

    在復(fù)雜的實際業(yè)務(wù)中,往往會出現(xiàn)各種嵌套的條件判斷邏輯。隨著需求的增加,條件邏輯會變得越來越復(fù)雜。面對這種情況,簡化判斷邏輯就是不得不做的事情,下面為大家介紹幾種方法
    2022-06-06
  • @Transactional跟@DS動態(tài)數(shù)據(jù)源注解沖突的解決

    @Transactional跟@DS動態(tài)數(shù)據(jù)源注解沖突的解決

    這篇文章主要介紹了@Transactional跟@DS動態(tài)數(shù)據(jù)源注解沖突的解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Java?C++分別實現(xiàn)滑動窗口的最大值

    Java?C++分別實現(xiàn)滑動窗口的最大值

    這篇文章主要介紹了分別通過Java和C++實現(xiàn)滑動窗口最大值,即給定一個數(shù)組?nums?和滑動窗口的大小?k,請找出所有滑動窗口里的最大值。感興趣的可以了解一下
    2021-12-12
  • 使用Java將Excel中的數(shù)字轉(zhuǎn)換為文本或?qū)⑽谋拘蛿?shù)字轉(zhuǎn)換為數(shù)字

    使用Java將Excel中的數(shù)字轉(zhuǎn)換為文本或?qū)⑽谋拘蛿?shù)字轉(zhuǎn)換為數(shù)字

    在 Excel 中,數(shù)字有時會以文本的形式存儲,這可能會影響數(shù)據(jù)的計算、排序和處理,無論是將數(shù)字轉(zhuǎn)換為文本,還是將文本型數(shù)字轉(zhuǎn)換為數(shù)字,這兩種操作在處理 Excel 數(shù)據(jù)時都非常常見且重要,本文將介紹如何使用 Java 完成這兩個任務(wù),需要的朋友可以參考下
    2025-12-12
  • IDEA導(dǎo)入jar包的完整實現(xiàn)步驟

    IDEA導(dǎo)入jar包的完整實現(xiàn)步驟

    由于導(dǎo)入jar包項目存在很多不確定的問題,導(dǎo)致每次都需要調(diào)試、配置好多遍,對此特意記錄下來,這篇文章主要給大家介紹了關(guān)于IDEA導(dǎo)入jar包的相關(guān)資料,需要的朋友可以參考下
    2024-01-01
  • 一起聊聊Java中13種鎖的實現(xiàn)方式

    一起聊聊Java中13種鎖的實現(xiàn)方式

    分布式系統(tǒng)時代,線程并發(fā),資源搶占,"鎖"?慢慢變得很重要。那么常見的鎖都有哪些?本文就來和大家聊聊Java中13種鎖的實現(xiàn)方式,感興趣的可以了解一下
    2022-08-08
  • java遍歷途中修改數(shù)據(jù)及刪除數(shù)據(jù)的方法總結(jié)

    java遍歷途中修改數(shù)據(jù)及刪除數(shù)據(jù)的方法總結(jié)

    在使用java的集合類遍歷數(shù)據(jù)的時候,在某些情況下可能需要對某些數(shù)據(jù)進行刪除,下面這篇文章主要給大家介紹了關(guān)于java遍歷途中修改數(shù)據(jù)及刪除數(shù)據(jù)的方法總結(jié),需要的朋友可以參考下
    2023-10-10
  • 解決springboot 2.x 里面訪問靜態(tài)資源的坑

    解決springboot 2.x 里面訪問靜態(tài)資源的坑

    這篇文章主要介紹了解決springboot 2.x 里面訪問靜態(tài)資源的坑,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • SSM框架中entity mapper dao service controller層的使用

    SSM框架中entity mapper dao service controll

    這篇文章主要介紹了SSM框架中entity mapper dao service controller層的使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11

最新評論

佛坪县| 安远县| 宣恩县| 宝山区| 台南县| 桐乡市| 公安县| 通海县| 白沙| 东山县| 石渠县| 伊宁县| 枣强县| 临猗县| 东海县| 溧阳市| 政和县| 龙泉市| 凤阳县| 海宁市| 阿拉善盟| 成武县| 高淳县| 河间市| 永寿县| 岳西县| 饶阳县| 通海县| 沂水县| 华坪县| 禹城市| 崇礼县| 富源县| 石阡县| 安吉县| 拜城县| 龙山县| 漳浦县| 汉沽区| 双流县| 乌拉特前旗|