Spring中實體類為什麼不需要註冊成bean

2021-08-15 12:24:26 字數 638 閱讀 1402

今天偶然想到乙個問題,spring中實體類為什麼不需要註冊成bean?

要理解為什麼不用注入,首先就清楚注入的目的是什麼?如果不注入,在程式中要使用某個類物件的方法,則需要去new乙個物件。然後我們呼叫其中的方法,眾所周知「程式=演算法+資料」。不失一般性,在物件導向開發中,類一般有兩種,一種是功能類的,主要是完成一些業務操作。一種是資料類,主要是儲存資料,比如pojo。我們資料提交上來後,自己組裝pojo(當然也有的框架可以幫我們組裝好),然後呼叫功能類的方法去操作這些資料,完成相應功能。如果沒有使用注入的方式注入這些功能類物件,則會有空指標的問題。

spring只需要注入需要注入的,有些實體業務上是從其它地方獲得的,何必spring注入?

比如你說的例子一看就知道ssh框架,其中user例項應該是使用者錄入的,從頁面表單傳來的,是struts2幫你注入的。

userservice是個工具類,你需要獲取(也就是new)他的物件例項才能呼叫類內部的方法。

而user只是個pojo,是個存放資料的載體,並不需要獲取(也就是new)他的物件例項,而是從外面傳進來的。

所以userservice需要new乙個,而user並不需。

而spring的注入機制其實就是代替了new的這個過程(稱為解耦),所以userservice需要注入,而user並不需要注入。

spring 中 pojo 類為什麼不需要注入

在思考這個問題之前應該需要知道什麼是 ioc 和 di 在 spring5 高階程式設計 中是這樣介紹它們之間的關係的 ioc 的核心是 di,旨在提供一種更簡單的機制來設定元件依賴項 通常稱為物件的協作者 並在整個生命週期中管理這些依賴項。需要某些依賴項的元件通常稱為物件,或者在 ioc 的情況下...

model實體類中Hibernate註解說明

hibernate註解 1。entity name entityname 必須,name為可選,對應資料庫中一的個表 2 table name catalog schema 可選,通常和 entity配合使用,只能標註在實體的class定義處,表示實體對應的資料庫表的資訊 name 可選,表示表的名...

Android中列表實體類排序

一 實體類實現comparable,parcelable 介面 eg public class vacation implements comparable,parcelable 二 重寫方法compareto,用於比較兩個類的對應的兩個屬性 eg override public int compa...