javascript
Spring控制反转(依赖注入)的最简单说明
1.常規(guī)方式實現(xiàn)實例化
1.1已有角色如下:
一個接口Interface,兩個接口實現(xiàn)類InstatnceA、InstanceB,一個調用類User
1.2當前實例化InstanceA如下:
Interface interface = new InstanceA(); #User類中的實例化代碼1.3欲修改如下:
現(xiàn)在想把實例化對象改為InstatnceB而不要實例化InstanceA
1.4代碼修改如下:
Interface interface = new InstanceB(); #修改后的User類中的實例化代碼,由InstanceA修改為了InstanceB1.5總結:
User控制實例化哪個類(是實例化InstanceA還是InstanceB);當我們想修改實例化的類時必須去修改User中的代碼。
?
2,.控制反轉實現(xiàn)實例化
2.1已有角色如下:
一個接口Interface,兩個接口實現(xiàn)類InstatnceA、InstanceB,一個調用類User,還有一個bean.xml(其維護一個Instance的id與InstanceA和InstanceB的對應關系)
2.2當前實例化InstanceA如下:
Interface interface = new Instance(); #User類中的實例化代碼 <bean id="Instance" class="com.test.core.InstanceA"></bean> #bean中的映射關系2.3欲修改如下(和1.3一樣):
現(xiàn)在想把實例化對象改為InstatnceB而不要實例化InstanceA
2.4代碼修改如下:
Interface interface = Instance(); #User類中的實例化代碼,并不需要修改<bean id="Instance" class="com.test.core.InstanceB"></bean> #對應關系為Instance--InstanceA變更為instance--InstanceB
2.5總結
spring控制實例化哪個類(是實例化InstanceA還是InstanceB);當我們想修改實例化的類時只要去修改bean.xml中的映射關系,而不用去User修改代碼
?
3.依賴注入
User要實例化一個對像就需要一個類(InstatnceA或InstanceB)這就是一種依賴,控制反轉后真正依賴的類(即要實例化的類)由beans.xml注入到User類。
依賴注入就是控制反轉的別名,依賴注入側重描述目地控制反轉側重描述現(xiàn)像(所以有時會見到依賴注入比控制反轉給為準確的說法)。
?
4. MVC、IOC和ORM
SSH框架是Java Web的基石,而其中Struts核心概念是MVC、Spring的核心概念是IOC和Hibernate的核心概念是ORM,圍繞這六個(或者叫三個)名詞誕生了一本又一本讓人看到想放棄的Java Web書藉。
其實拋開配置等細節(jié)問題僅從思想角度來看,MVC、IOC和ORM就是一回事,其本質都是將原本的“A調用B”模式解耦為“A通過xml調用B”的模式,以降低A和B強耦合導致的牽一發(fā)而動全身的問題(就是A或B修改后,工程中所有B或A的代碼都要修改)。
另外,SSH可能會死(被別的框架取代),但是MVC、IOC和ORM永遠不會死;但又反過來說到別的框架上MVC、IOC和ORM道理還是一樣的不過換個xml文件罷了。
| 框架 | 核心概念 | A | xml | B | xml作用 |
| Struts | MVC | 前端web頁面 | struts.xml | 后端表單處理類 | struts.xml控制了前端頁面實際會被推送到的類,當A/B有修改一般對此xml稍作調整即可 |
| Spring | IOC | new class的代碼 | beam.xml | class本身 | beam.xml控制了new class會真正被實例化的類,當A/B有修改一般對此xml稍作調整即可 |
| Hibernate | ORM | 類 | table.hbm.xml | 數(shù)據庫表 | table.hbm.xml控制了類屬性與數(shù)據表的列的對應關系,當A/B有修改一般對此xml稍作調整即可 |
?
?
?
?
參考:
https://www.cnblogs.com/whgk/p/6074930.html
總結
以上是生活随笔為你收集整理的Spring控制反转(依赖注入)的最简单说明的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MSICE界面和功能分析
- 下一篇: Spring jdbc的搭建