6 回答

TA貢獻1911條經驗 獲得超7個贊
實際上,您應該使用JVM托管對象或Spring托管對象來調用方法。根據控制器類中的上述代碼,您將創建一個新對象來調用具有自動連接對象的服務類。
MileageFeeCalculator calc = new MileageFeeCalculator();
所以它不會那樣工作。
該解決方案使此MileageFeeCalculator成為Controller本身的自動連線對象。
像下面一樣更改您的Controller類。
@Controllerpublic class MileageFeeController { @Autowired MileageFeeCalculator calc; @RequestMapping("/mileage/{miles}") @ResponseBody public float mileageFee(@PathVariable int miles) { return calc.mileageCharge(miles); }}

TA貢獻1863條經驗 獲得超2個贊
我曾經不習慣的時候遇到過同樣的問題the life in the IoC world
。@Autowired
我的一個bean 的字段在運行時為null。
根本原因是,我不是使用由Spring IoC容器(其@Autowired
字段被indeed
正確注入)維護的自動創建的bean,而是newing
我自己的bean類型的實例并使用它。當然這個@Autowired
字段是空的,因為Spring沒有機會注入它。

TA貢獻1966條經驗 獲得超4個贊
這似乎是罕見的情況,但這是發生在我身上的事情:
我們使用的@Inject
不是@Autowired
Spring支持的javaee標準。每個地方都運轉良好,豆子正確注入,而不是一個地方。豆注射似乎是一樣的
@InjectCalculator myCalculator
最后我們發現錯誤是我們(實際上,Eclipse自動完成功能)導入com.opensymphony.xwork2.Inject
而不是javax.inject.Inject
!
所以總結一下,確保您的注釋(@Autowired
,@Inject
,@Service
,...)有正確的包!
添加回答
舉報