通過 spring 框架,直接調用一些處理對象的方法和數據庫交互, http 接口從 controller 層調用開始, 如果是:controller --> service --> dao --> entity 這個流程正常調用,則:
(1)controller1 --> service1 --> dao1 -->entity1
(2)controller1 --> service2 --> dao2 -->entity2 (類推 3、4、5……都可以正常執行)
但是如果:
(3)controller1 --> controller2 --> service1 --> dao1 -->entity1
(4)controller1 --> controller2 --> service2 --> dao2 -->entity2
會產生:這種由於邏輯需要,需要先在同一 controller 層,先調用其它 controller 類(直接 new 該類處理一下數據),再回來執行自己實體類操作(或者其他實體類操作)的時候,這種情況下,controller2 里面的 mongotemplate 對象,這個時候是一個 null 對象,是不能正常調用該對象對應的操作數據庫的方法,來執行自己本身的邏輯的,也就是說,這個時候調用 controller2 類里面的方法,都是不能正常執行的!
解決方法:想要 controller2 在 controller1 里面調用能都正常執行,由於這時候,mongotemplate 在 controller2 中是 null 值,只要在 controller1 中把 mongotemplate 對象傳入給 controller2 中即可!(可以通過在 controller2 中添加構造方法,在 controller1 中 new controller2(MongoTemplate mongotemplate) 時候把 mongotemplate 對象傳入 controller2 ,即可解決該問題!)
【http 通過 controller 進來的 mongotemplate 對象才會注入 spring ,才能正常使用,如果是通過其他 controller 類來調用同層的 controller 里面的 mongotemplate ,則該對象是 null 值,不可使用 !而從 controller 調用 service 這種不同層的,則可以正常使用!】