第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

為什么我的Spring @Autowired字段為空?

為什么我的Spring @Autowired字段為空?

我有一個(gè)Spring @Serviceclass(MileageFeeCalculator),它有一個(gè)@Autowiredfield(rateService),但該字段是null我嘗試使用它時(shí)。日志顯示正在創(chuàng)建MileageFeeCalculatorbean和MileageRateServicebean,但NullPointerException每當(dāng)我嘗試mileageCharge在我的服務(wù)bean上調(diào)用該方法時(shí),我都會(huì)得到。為什么Spring沒(méi)有自動(dòng)裝配領(lǐng)域?控制器類:@Controllerpublic class MileageFeeController {        @RequestMapping("/mileage/{miles}")    @ResponseBody    public float mileageFee(@PathVariable int miles) {        MileageFeeCalculator calc = new MileageFeeCalculator();        return calc.mileageCharge(miles);    }}服務(wù)類:@Servicepublic class MileageFeeCalculator {    @Autowired    private MileageRateService rateService; // <--- should be autowired, is null    public float mileageCharge(final int miles) {        return (miles * rateService.ratePerMile()); // <--- throws NPE    }}應(yīng)該自動(dòng)裝配的服務(wù)bean,MileageFeeCalculator但它不是:@Servicepublic class MileageRateService {    public float ratePerMile() {        return 0.565f;    }}當(dāng)我嘗試時(shí)GET /mileage/3,我得到這個(gè)例外:java.lang.NullPointerException: null    at com.chrylis.example.spring_autowired_npe.MileageFeeCalculator.mileageCharge(MileageFeeCalculator.java:13)    at com.chrylis.example.spring_autowired_npe.MileageFeeController.mileageFee(MileageFeeController.java:14)    ...為什么我的Spring @Autowired字段為空?
查看完整描述

6 回答

?
Smart貓小萌

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);
    }}


查看完整回答
反對(duì) 回復(fù) 2019-05-21
?
小唯快跑啊

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ì)注入它。


查看完整回答
反對(duì) 回復(fù) 2019-05-21
?
慕標(biāo)5832272

TA貢獻(xiàn)1966條經(jīng)驗(yàn) 獲得超4個(gè)贊

這似乎是罕見(jiàn)的情況,但這是發(fā)生在我身上的事情:

我們使用的@Inject不是@AutowiredSpring支持的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,...)有正確的包!


查看完整回答
反對(duì) 回復(fù) 2019-05-21
  • 6 回答
  • 0 關(guān)注
  • 2528 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)