国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

怎樣實現依賴注入功能之筆記

weizx / 3296人閱讀

摘要:對類的實例化,不是開發者自己通過的方式來實例化,而是通過框架自身來實例化,這過程稱為。一般地,我們也將控制反轉稱為,依賴注入。繼續遍歷這些成員變量,在循環中判斷當前成員變量是否帶有注解,若帶有該注解,則從中根據類取出實例。

對類的實例化,不是開發者自己通過new的方式來實例化,而是通過框架自身來實例化,這過程稱為IoC。控制不是由開發者來決定的,而是反轉給框架了。一般地,我們也將控制反轉稱為DI(Dependency Injection,依賴注入)。那如何實現呢?

最簡單的方式是,先通過BeanHelper獲取所有Bean Map(是一個Map,Object> 結構,紀錄了類與對象的映射關系,
分別取出Bean類與Bean實例 ,進而通過反射獲取類中所有的成員變量。繼續遍歷這些成員變量,在循環中判斷當前成員變量是否帶有Inject注解,若帶有該注解,則從Bean Map中根據Bean類取出Bean實例。最后通過ReflectionUtil#setField方法來修改當前成員變量的值。

核心實現:

    Map, Object> beanMap = BeanHelper.getBeanMap();
    if (CollectionUtil.isNotEmpty(beanMap)) {
        for (Map.Entry, Object> beanEntry : beanMap.entrySet()) {
            Class beanClass = beanEntry.getKey();
            Object beanInstance = beanEntry.getValue();
            Field[] beanFields = beanClass.getDeclaredFields();
            if (ArrayUtil.isNotEmpty(beanFields)) {
                for (Field beanField : beanFields) {
                    if (beanField.isAnnotationPresent(Inject.class)) {
                        Class beanFieldClass = beanField.getType();
                        Object beanFieldInstance = beanMap.get(beanFieldClass);
                        if (beanFieldInstance != null) {
                            ReflectionUtil.setField(beanInstance, beanField, beanFieldInstance);
                        }
                    }
                }
            }
        }
    }
    
    

更多架構底層實現代碼請移步

https://github.com/edagarli/own_framework

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/65409.html

相關文章

  • Spring入門IOC和AOP學習筆記

    摘要:入門和學習筆記概述框架的核心有兩個容器作為超級大工廠,負責管理創建所有的對象,這些對象被稱為。中的一些術語切面切面組織多個,放在切面中定義。 Spring入門IOC和AOP學習筆記 概述 Spring框架的核心有兩個: Spring容器作為超級大工廠,負責管理、創建所有的Java對象,這些Java對象被稱為Bean。 Spring容器管理容器中Bean之間的依賴關系,使用一種叫做依賴...

    wenyiweb 評論0 收藏0
  • APT案例點擊事件

    摘要:楊充一定時間內該點擊事件只能執行一次用來修飾這是一個什么類型的注解。楊充自定義編譯器獲取遍歷,并生成代碼配置文件文件配置的作用是向系統注冊自定義注解處理器,執行編譯時使用進行處理。 目錄介紹 01.創建項目步驟 1.1 項目搭建 1.2 項目功能 02.自定義注解 03.創建Processor 04.compiler配置文件 05.編譯jar 06.如何使用 07.編譯生成代...

    cyixlq 評論0 收藏0
  • 看起來很長但還是有用的Spring學習筆記

    摘要:關于依賴注入注入的注解提供的注解不僅僅是對象,還有在構造器上,還能用在屬性的方法上。與之相反,的限定符能夠在所有可選的上進行縮小范圍的操作,最終能夠達到只有一個滿足所規定的限制條件。注解是使用限定符的主要方式。 本文首發于泊浮目的專欄:https://segmentfault.com/blog... Spring致力于提供一種方法管理你的業務對象。在大量Java EE的應用中,隨處可...

    DTeam 評論0 收藏0
  • Spring框架學習筆記(一):官方文檔介紹,IoC與AOP概念學習

    摘要:構造函數注入通過調用類的構造函數,將接口實現類通過構造函數變量傳入。而在中,其使用橫切技術,將這類代碼從原屬的封裝對象中提取出來,封裝到一個可重用模塊中,稱為。 最近實習用到Spring的開發框架,但是之前沒有接觸過,因此希望利用網上的資源來學習以下。 Spring官方給出了非常全面的介紹,非常適合我這種完全的小白……在這一系列學習中,我閱讀的主要資源是5.1.2 Reference ...

    mindwind 評論0 收藏0
  • 微信小程序性能優化入門指南

    摘要:希望大家看完這篇文章能對小程序性能優化有一定的認識,如果有錯誤或不嚴謹的地方,歡迎批評指正,如果喜歡,歡迎點贊收藏。 小程序從發布到現在也已經有將近兩年的時間,越來越來多的公司開始重視小程序生態帶來的流量,今年也由于小程序平臺對外能力的越來越多的開放以及小程序平臺的自身優化,越來越多的開發者也自主的投入到小程序的開發當中,現在,作為前端如果會寫小程序,絕對是一個不折不扣的面試加分項。相...

    whinc 評論0 收藏0

發表評論

0條評論

weizx

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<