6 回答

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

TA貢獻(xiàn)1863條經(jīng)驗(yàn) 獲得超2個(gè)贊
我曾經(jīng)不習(xí)慣的時(shí)候遇到過(guò)同樣的問(wèn)題the life in the IoC world
。@Autowired
我的一個(gè)bean 的字段在運(yùn)行時(shí)為null。
根本原因是,我不是使用由Spring IoC容器(其@Autowired
字段被indeed
正確注入)維護(hù)的自動(dòng)創(chuàng)建的bean,而是newing
我自己的bean類型的實(shí)例并使用它。當(dāng)然這個(gè)@Autowired
字段是空的,因?yàn)镾pring沒(méi)有機(jī)會(huì)注入它。

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