Spring Framework – 再次理解

Spring是一個IOC反轉控制套件

他可以直接用xml設置每一個物件的相依性
例如A物件需要B物件就不需要在A類別裡面new B(),可以降低程式之間的耦合

舉例

今天你聽主管的吩咐說內部有個程式有些問題要麻煩您修改
然後就把程式丟給你並描述問題點在哪
此時當你打開專案時..情況是物件以 a , b , c , d …z 命名
不用多!就用者種規則建置了20幾個諸如此類的物件
你要去找各個物件之間的相依性要怎麼找? 我只能跟你說悲劇拉!
你只能一個一個打開慢慢找
假設情況如下

若今天這專案有用Spring去做物件管理有什麼差?
1.你不再需要”每個檔案都開來”看裡面的物件相依性
2.能迅速的了解該專案的架構

不多說我們就拿上面的例子用Spring 【ApplicationContext.xml】 設置如下

 

容器(Container)的觀念

容器是個可以裝載東西的皿器
以現實生活中來舉例,杯子、茶壺、包包等都是容器
而Spring的配置檔也是一個容器,就好比上方的 ApplicationContext.xml
當初我對於容器沒什麼深刻的感覺,近期發生很白癡的事情以後我才恍然大悟
那我們直接拿個例子來說明 Spring Container 吧
範例意識圖

test

Printer.java
該物件提供 sayHello Method

 

ApplicationContext.xml
Spring Ioc Container 配置

 

Main.java
其中我們看到11行 new Main() 及代表並非從 Spring Container(如上圖意識圖) 中得取 Main Object
所以當執行 main.getPrinter().sayHello() 時會導致Printer Nullpoint Exception

18-20行 則是從Spring Container 要取 Main Object 的方式
執行main2.getPrinter().sayHello() 行時就不會發生 Printer Nullpoint Exception 的問題了

Reference

Spring Doc – Chapter 3. The IoC container

 

範例程式下載

SpringContainerDemo

Leave a Reply

你的電子郵件位址並不會被公開。 必要欄位標記為 *