1. 程式人生 > >Spring 父類注入的屬性 在子類中呼叫為null

Spring 父類注入的屬性 在子類中呼叫為null

在spring中注入屬性的目標是例項而不是類

子類從父類繼承的值是與例項無關的 所以子類的屬性並沒有被賦值


工作背景:

有一個BaseService 有3個Dao成員 DaoA DaoB DaoC

並且 spring 為這3個成員分別注入了值 這三個Dao是直接可以拿過來執行資料庫訪問的

但是有一個BaseService的子類 xxx 

也是拿來執行資料庫訪問的 

表面上 它可以正常的使用 DaoA DaoB 

這讓我產生了誤解,以為這些是從父類拿過來的

但是 需求需要xxx去使用DaoC來訪問資料庫

結果一直報空指標異常 困惑了很久

最後發現 xxx之所以能使用DaoA DaoB 是因為spring配置檔案中也其DaoA DaoB 注了值

而與父類的DaoA DaoB DaoC是沒有關係的

xxx的DaoC沒有被注值 拿過來用的時候就一直是預設的null 所以一直報空指標異常


spring基於setter的注入,是在bean被建立之後再做的。而在建立的同時,呼叫了initParams();
這個方法中又涉及到還未注入的屬性.所以丟擲空指標了

因為基類呼叫建構函式的時候,spring還沒注入