日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Spring自動注入失敗的解決方法

瀏覽:26日期:2023-07-15 11:42:06
Spring自動注入失敗如何解決?

我有一個被Spring @Service注解的類(MileageFeeCalculator),它有一個用@Autowired注入的變量(rateService),但是當我用這個變量的時候,它顯示為null。日志顯示MileageFeeCalculator bean和MileageRateService bean都被創建了,但是當我調用service上的mileageCharge ()方法時,就會報NullPointerException錯誤。為什么Spring不能自動注入這個實例?

Controller:

@Controllerpublic class MileageFeeController {@RequestMapping('/mileage/{miles}') @ResponseBody public float mileageFee(@PathVariable int miles) {MileageFeeCalculator calc = new MileageFeeCalculator();return calc.mileageCharge(miles); }}

Service:

@Servicepublic class MileageFeeCalculator { @Autowired private MileageRateService rateService; // <--- should be autowired, is null public float mileageCharge(final int miles) {return (miles * rateService.ratePerMile()); // <--- throws NPE }}

本應被注入Service但是并沒有的類

@Servicepublic class MileageRateService { public float ratePerMile() {return 0.565f; }}

為什么我調用GET /mileage/3這個請求的時候,會報這樣的錯誤:

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) ...回答

@Autowired注解的字段為null是因為,Spring無法獲取你用new關鍵字創建的類,也無法自動注入它。

Spring Ioc容器有三個主要的邏輯組件:應用程序可以使用的注冊表(ApplicationContext);通過把依賴項與上下文中的bean匹配,將依賴的對象注入的配置器系統;以及一個依賴解析器,它可以查看許多不同bean的配置,并確定如何按必要的順序實例化和配置它們。

Ioc容器并沒有魔法,除非你以某種方式通知它,否則它無法獲取Java對象。當你調用new創建對象時,JVM實例化新對象,并將其中一個副本交給你——它并不經歷Spring的配置過程。有三種方法可以配置bean實例。

注入你的bean

最好的選擇是讓Spring注入所有的bean;這樣的代碼量會最少并且也最容易維護。為了使注入如你所愿,需要把MileageFeeCalculator像這樣注入。

@Controllerpublic class MileageFeeController { @Autowired private MileageFeeCalculator calc; @RequestMapping('/mileage/{miles}') @ResponseBody public float mileageFee(@PathVariable int miles) {return calc.mileageCharge(miles); }}

如果你需要為不同的請求都創建一個類的新實例,可以通過Spring注解的scopes實現。

使用@Configurable

如果你真的需要把new出來的對象保存進行注入,那可以使用Spring的@Configurable注解,通過使用AOP在編譯時織入你的對象中。這種方法將代碼插入到對象的構造函數中,提醒Spring這個對象正在被創建,這樣Spring就能夠配置新實例了。這需要你添加一些配置信息。并打開Spring的運行時配置處理器。Roo Active Record系統使用這種方法來允許實體的new實例獲取注入的必要持久性信息。

@Service@Configurablepublic class MileageFeeCalculator { @Autowired private MileageRateService rateService; public float mileageCharge(final int miles) {return (miles * rateService.ratePerMile()); }}手動查找bean:不推薦

這種方法只適用于在特殊情況下與遺留代碼對接。創建一個Spring可以自動注入并且遺留代碼也能調用的單例適配器總是可取的,但是也許可以直接向spring application context請求bean實例。

為了做到這點,你需要一個類,該類提供了對ApplicationContext對象的引用

@Componentpublic class ApplicationContextHolder implements ApplicationContextAware { private static ApplicationContext context; @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {context = applicationContext; } public static ApplicationContext getContext() {return context; }}

之后你的遺留代碼就可以調用getContext()方法獲取所需的bean實例了。

@Controllerpublic class MileageFeeController {@RequestMapping('/mileage/{miles}') @ResponseBody public float mileageFee(@PathVariable int miles) {MileageFeeCalculator calc = ApplicationContextHolder.getContext().getBean(MileageFeeCalculator.class);return calc.mileageCharge(miles); }}

以上就是Spring自動注入失敗的解決方法的詳細內容,更多關于Spring自動注入失敗的解決的資料請關注好吧啦網其它相關文章!

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
91精品电影| 欧美国产一级| 日韩午夜黄色| 欧美日韩第一| 国产在线不卡| 激情久久五月| 蜜臀av免费一区二区三区| 久久美女性网| 好吊一区二区三区| 在线亚洲激情| 久久精品99国产精品| 国产欧美一区二区精品久久久 | 人在线成免费视频| 丝袜诱惑一区二区| 久久亚洲国产| 中文日韩欧美| 婷婷亚洲精品| 国产精品欧美三级在线观看| 国产精品久久久久久模特| 麻豆国产欧美一区二区三区 | 中文在线资源| 四虎4545www国产精品| 久久久久久久久丰满| 亚洲精品电影| 亚洲资源网站| 国产九一精品| 欧美亚洲日本精品| 夜夜精品视频| 91精品国产自产精品男人的天堂 | 综合一区在线| 国产精品资源| 精品午夜久久| 日韩不卡在线| 日av在线不卡| 国产精品一区二区中文字幕| 国产一区二区三区天码| 久久精品二区三区| 蜜臀va亚洲va欧美va天堂| 日韩av中文字幕一区二区三区| 国产精品宾馆| 久久狠狠婷婷| 日本综合精品一区| 精品久久国产一区| 亚洲成人三区| 久久精品凹凸全集| 99成人在线视频| 日本国产亚洲| 精品网站aaa| 黄色亚洲大片免费在线观看| 日本午夜精品久久久久| 日韩啪啪电影网| 亚洲日本欧美| 日韩免费视频| 日本成人在线不卡视频| 成人欧美一区二区三区的电影| 亚洲一区二区三区免费在线观看 | 午夜av成人| 91精品国产一区二区在线观看| 国产精品蜜芽在线观看| 在线一区免费观看| 精品视频一区二区三区在线观看| re久久精品视频| 国产精品美女在线观看直播 | 韩日一区二区| 国产午夜精品一区二区三区欧美 | 在线免费观看亚洲| 成人日韩av| 亚洲精品乱码久久久久久蜜桃麻豆 | 91欧美日韩| 巨乳诱惑日韩免费av| 久久精品免费看| 亚洲一二av| 亚洲福利国产| 精品中文在线| 天堂俺去俺来也www久久婷婷| 亚洲精品**中文毛片| 日韩**一区毛片| 欧美日韩国产一区二区三区不卡| 欧美韩一区二区| 一区二区三区午夜视频| 国产v综合v| 国产精品自拍区| 老司机精品久久| 亚洲成人一区在线观看| 麻豆精品少妇| 色综合视频一区二区三区日韩 | 久久精选视频| 久久一区欧美| 日本麻豆一区二区三区视频| 1024精品久久久久久久久| 欧美xxxx中国| 欧美日本一区| 综合一区在线| 久久aⅴ国产紧身牛仔裤| 中文字幕一区久| 精品无人区麻豆乱码久久久| 日韩精品导航| 中文字幕免费一区二区| 精品一区三区| 在线手机中文字幕| 麻豆国产精品视频| 欧美视频二区| 综合色一区二区| 首页欧美精品中文字幕| av一区二区高清| 九九色在线视频| 久草免费在线视频| 精品国产a一区二区三区v免费| 国产日韩一区二区三免费高清 | 国产精选在线| 免费亚洲一区| 国产精品麻豆成人av电影艾秋| 日韩一区精品| 亚洲aⅴ网站| 亚洲综合五月| 蜜桃av一区二区| 美女黄网久久| 在线 亚洲欧美在线综合一区| 三上悠亚国产精品一区二区三区| 国产成人1区| 国产成人精品一区二区免费看京| 久久精品超碰| 国产精品白浆| 国产精品99久久免费| 国产精品久久亚洲不卡| 日韩精品91亚洲二区在线观看| 蜜桃久久av一区| 免费观看日韩电影| 视频一区视频二区中文字幕| 亚洲欧美网站| 首页国产欧美久久| 亚洲精品亚洲人成在线观看| 日韩中文字幕不卡| 视频在线观看91| 综合激情视频| 欧美性www| 麻豆高清免费国产一区| 成午夜精品一区二区三区软件| 国产精品久久观看| 99久久99久久精品国产片果冰| 国产亚洲一区二区手机在线观看| 日本а中文在线天堂| 久久婷婷丁香| 亚洲中午字幕| 日韩和欧美一区二区| 国产精品99久久久久久董美香| 美女高潮久久久| 国产一区二区久久久久| 三级小说欧洲区亚洲区| 激情欧美国产欧美| 亚洲激情精品| 亚洲久草在线| 免费亚洲一区| 久久国产亚洲精品| 久久大逼视频| 日本欧美在线| 欧美极品中文字幕| 三级在线看中文字幕完整版| 极品日韩av| 一本一道久久a久久| 国产精品夜夜夜| 久久天堂成人| 日韩影片在线观看| 国产aⅴ精品一区二区三区久久| 亚洲性图久久| 亚洲精品九九| 国产成人久久| 亚洲第一精品影视| 亚洲精品九九| 久久精品三级| 伊人影院久久| 欧美日韩一区二区高清| 91综合视频| 亚洲一区日韩| 国产精品黄网站| 99视频精品视频高清免费| 亚洲精选久久| 成人福利视频| 日韩精品亚洲专区| 夜鲁夜鲁夜鲁视频在线播放| 免费观看在线综合色| 成人在线免费观看网站| 中文亚洲免费| 国产精品99一区二区三| 久久亚洲风情| 国产中文欧美日韩在线| 亚洲精品99| 久久爱www.| 午夜日韩av| 久久的色偷偷| 丝袜脚交一区二区| 日本久久黄色| 亚洲精一区二区三区| 中文字幕高清在线播放| 日韩一区二区三免费高清在线观看 | 日本一区二区高清不卡| 亚洲激情五月| 精品国产亚洲一区二区三区在线| 夜久久久久久| 黄毛片在线观看|