在思考這個問題之前應該需要知道什麼是 ioc 和 di 。在《spring5 高階程式設計》中是這樣介紹它們之間的關係的:
ioc 的核心是當然,ioc 的概念眾說紛紜,因為它太抽象了,而我們只需要理解其中一種概念就足夠了。o( ̄▽ ̄)ddi,旨在提供一種更簡單的機制來設定元件依賴項(通常稱為物件的協作者),並在整個生命週期中管理這些依賴項。需要某些依賴項的元件通常稱為物件,或者在
ioc 的情況下被稱為目標物件。通常,ioc 可以分解為兩種子型別:依賴注入和依賴查詢。這些子型別被進一步分解為 ioc 服務的具體實現。
通過這個定義可以清楚的看到, 當談論 di 時,通常是在談論 ioc,而當談論 ioc 時,則並不總是在談論 di(例如,依賴查詢也是
ioc 的一種形式)。
回到問題本身,spring 中 pojo 類為什麼不需要注入?
首先我們需要知道使用 ioc 的意義在哪,能夠滿足 ocp(開閉原則,對擴充套件開放,對修改關閉)
在實際開發中使用者的需求是不斷變化的,而為了滿足使用者需求變化的同時不改變原有**就需要引入 ioc 。
舉個例子:現有乙個介面 articleservice ,乙個使用 oracle 資料庫的實現類 articleserviceimpl 。現在使用者需求變更要求使用 mysql 資料庫,那麼怎麼解決呢?新建乙個使用 mysql 資料庫的實現類 articleserviceimpl2 即可。
對於 service 層類需要注入我們都知道了,那麼 pojo 類呢?
什麼是 pojo 類?通常就是實體類,有時也會對其封裝成 vo 。實體類代表一種實際存在或者依託介質存在的東西,它並不是抽象的。比如 文章,電腦,汽車等等,這些實體類會因為使用者的需求變更而改變嗎?答案是肯定不會變化。使用者需求再怎麼變更也改變不了一篇文章,一輛汽車的本質,頂多加一些時間、型別、品牌這些屬性。而這些並不考慮在業務的變化範圍內,所以並不需用使用 ioc 。
最後就有了我們平時寫業務邏輯的**:
@resource
private articleservice articleservice;
//注入
public
void
hello()
ヾ( ̄▽ ̄)bye~~bye~
個人部落格:spring 中 pojo 類為什麼不需要注入
為什麼POJO類要實現序列化
1 序列化就是一種用來處理物件流的機制,所謂物件流就是將物件的內容進行流化。可以對流化後的物件進行讀寫操作,也可以在網路之間傳輸,需要實現serializable介面,該介面沒有需要實現的方法,只是為了表示物件是可以序列化的。序列化是將物件轉換為容易傳輸的格式的過程。2 是物件永久化的一種機制,在程...
為什麼要使用spring?
1 降低元件之間的耦合度,實現軟體各層之間的解耦 2 可以使用容器提供的眾多服務,如 事務管理服務,訊息服務等,當我們使用容器管理事務時,開發人員就不需要手工控制事務,也不必處理複雜的事務傳播了 3 容器提供單例模式,spring預設給開發人員提供這種模式 4 提供aop技術,可以很容易實現許可權攔...
Spring中實體類為什麼不需要註冊成bean
今天偶然想到乙個問題,spring中實體類為什麼不需要註冊成bean?要理解為什麼不用注入,首先就清楚注入的目的是什麼?如果不注入,在程式中要使用某個類物件的方法,則需要去new乙個物件。然後我們呼叫其中的方法,眾所周知 程式 演算法 資料 不失一般性,在物件導向開發中,類一般有兩種,一種是功能類的...