手寫Spring ioc 框架,狠狠的“Spring 原始碼

wxt020發表於2020-10-31

估計很多朋友使用 spring 很長時間,對於 spring 使用非常頻繁,實際上對於原始碼一直沒有靜下心來學習過。

你是不是有這樣的感覺呢?

但是 spring 原始碼存在一個問題,那就是過於抽象,導致學習起來成本上升。所以本文由淺入深,只實現 spring 的核心功能,便於自己和他人學習 spring 的核心原理。

spring 的核心

Spring 的核心就是 spring-beans,後面的一切 spring-boot,spring-cloud 都是建立在這個地基之上。
當別人問你 spring 的時候,希望你可以談談自己對於 spring ioc 自己更深層的見解,而不是網上人云亦云的幾句話。

什麼是 IOC

控制反轉(Inversion of Control,縮寫為IoC),是物件導向程式設計中的一種設計原則,可以用來減低計算機程式碼之間的耦合度。
其中最常見的方式叫做依賴注入(Dependency Injection,簡稱DI)。
透過控制反轉,物件在被建立的時候,由一個調控系統內所有物件的外界實體,將其所依賴的物件的引用傳遞給它。網址:
也可以說,依賴被注入到物件中。

為什麼需要 IOC

IoC 是解耦的一種方法。
我們知道Java 是一門物件導向的語言,在 Java 中 Everything is Object,我們的程式就是由若干物件組成的。
當我們的專案越來越大,合作的開發者越來越多的時候,我們的類就會越來越多,類與類之間的引用就會成指數級的增長。

快速開始

maven 引入

<dependency>
    <groupId>com.github.houbb</groupId>
    <artifactId>ioc</artifactId>
    <version>0.1.11</version></dependency>123456

測試準備

全部測試程式碼,見 test 模組。

  • Apple.java
public class Apple {
    public void color() {
        System.out.println("Apple color: red. ");
    }}1234567
  • apple.json

類似於 xml 的配置,我們暫時使用 json 進行配置驗證。

[{"name":"apple","className":"com.github.houbb.ioc.test.service.Apple"}]1234

執行測試.

  • 測試
BeanFactory beanFactory = new JsonApplicationContext("apple.json");Apple apple = (Apple) beanFactory.getBean("apple");apple.color();123
  • 日誌
Apple color: red.


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69984164/viewspace-2731396/,如需轉載,請註明出處,否則將追究法律責任。

相關文章