1. 程式人生 > 其它 >Spring思想學習筆記(一)

Spring思想學習筆記(一)

Spring是一個面向切面(AOP)和控制反轉的(IOC)的框架

1.IOC控制翻轉,為什麼叫控制反轉呢,因為決定權改變了。

以前是程式設計師作為主導,現在是利用set注入,把決定權交給了使用者。

舉個例子:

我們都知道Spring需要Dao層,Service層。

Dao層放實體,一般是Dao介面和DaoImpl實現類。

Service層放服務,一般是Service介面和ServiceImpl。

Service層呼叫dao層的介面。

現在具體要求來了,我們有三種水果。蘋果,香蕉和桃子。

對應我們就要有fruitDao,AppleIMPL,bananaImpl,peachImpl。

如果不用IOC,我們就需要在Service層的介面寫三個服務,也就是new三個Dao介面

fruitDao apple=new AppleImpl;
fruitDao banana=new fruteImpl;
fruteDao peach=new fruteImpl;//這是隨便寫的,不能執行哈。

現在是三個水果,以後是不是更麻煩?

麻煩是第一個,當用戶需求更改的時候,使用者說我不喜歡吃蘋果,香蕉和桃子,我需要新的。你是不是還要後續新增,然後修改,根據使用者的變化變化是非常錯誤的。

這時候就想想IOC。

1.我們之前是new一個確定的東西。

2.但是現在我們可以給一個介面fruteDao,fruteDao對應很多的實現類,AppleIMPL,bananaImpl,peachImpl。

3.我們在Service層之前是一個一個new的,現在我們使用一個set方法注入。

public void setFruteDao(FruteDao fruteDao)
{
    this.fruteDao=fruteDao;
}

不要小看這個程式碼。

之前寫的三行都可以刪了,寫上這個。

只需要你在Test類或者使用者訪問的那個類裡訪問時呼叫set方法,把想要的那個水果傳入就好了

fruteService.setFruteDao(水果類)

這樣就會把你想要的那個水果傳給service,然後弄個實體,不用new了,也就是把控制權交給使用者了。

以前是使用者要啥,我寫啥,我是手動寫

現在是使用者自己說要啥,然後我站旁邊看。相當於我造了個set注入機器,使用者自己說,機器自動注入new。我就很輕鬆啊。