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

您的位置:首頁技術(shù)文章
文章詳情頁

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

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

我有一個被Spring @Service注解的類(MileageFeeCalculator),它有一個用@Autowired注入的變量(rateService),但是當(dāng)我用這個變量的時候,它顯示為null。日志顯示MileageFeeCalculator bean和MileageRateService bean都被創(chuàng)建了,但是當(dāng)我調(diào)用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 }}

本應(yīng)被注入Service但是并沒有的類

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

為什么我調(diào)用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關(guān)鍵字創(chuàng)建的類,也無法自動注入它。

Spring Ioc容器有三個主要的邏輯組件:應(yīng)用程序可以使用的注冊表(ApplicationContext);通過把依賴項與上下文中的bean匹配,將依賴的對象注入的配置器系統(tǒng);以及一個依賴解析器,它可以查看許多不同bean的配置,并確定如何按必要的順序?qū)嵗团渲盟鼈儭?/p>

Ioc容器并沒有魔法,除非你以某種方式通知它,否則它無法獲取Java對象。當(dāng)你調(diào)用new創(chuàng)建對象時,JVM實例化新對象,并將其中一個副本交給你——它并不經(jīng)歷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); }}

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

使用@Configurable

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

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

這種方法只適用于在特殊情況下與遺留代碼對接。創(chuàng)建一個Spring可以自動注入并且遺留代碼也能調(diào)用的單例適配器總是可取的,但是也許可以直接向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; }}

之后你的遺留代碼就可以調(diào)用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自動注入失敗的解決方法的詳細(xì)內(nèi)容,更多關(guān)于Spring自動注入失敗的解決的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Spring
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩中文字幕| 日韩精品视频网| 久久青草久久| 国产精品蜜芽在线观看| 国产精品精品| 99热精品久久| 日韩精品欧美成人高清一区二区| 国产精品色婷婷在线观看| 一区二区国产精品| 日韩在线麻豆| 欧美性www| 欧美aa在线视频| 美女av在线免费看| 日韩综合在线| 国产亚洲一区二区手机在线观看| 91精品亚洲| 黄色亚洲免费| 亚洲免费专区| 国产精久久一区二区| 国产在线日韩精品| 日本久久成人网| 亚洲激情中文在线| 中文字幕亚洲在线观看| 日韩精品视频网站| 国产一区2区在线观看| 成人日韩在线观看| 国产精品色网| 欧美日韩a区| 麻豆传媒一区二区三区| 日产午夜精品一线二线三线| 久久婷婷丁香| 亚洲激情五月| 国产黄大片在线观看| 成人美女视频| 国产亚洲亚洲| 亚洲精品88| 日韩视频1区| 久久精品影视| 国产精品伦理久久久久久| 日韩一区免费| 在线精品亚洲| 国产剧情在线观看一区| 日韩av专区| 国产综合色区在线观看| 欧美日韩国产在线一区| 91在线成人| 蜜桃av在线播放| 中文字幕日韩欧美精品高清在线| 麻豆精品在线播放| 欧美日韩国产精品一区二区亚洲| 91精品国产经典在线观看| 超碰在线99| 亚洲精品看片| 日韩在线欧美| 日韩av一区二区在线影视| 日韩在线短视频| 日本麻豆一区二区三区视频| 亚洲精品一级二级| 亚洲精品日本| 日韩高清不卡| 国产精品一区二区三区www | 亚洲色图综合| 福利欧美精品在线| 中文字幕av一区二区三区人| 精品国产中文字幕第一页| 日本不卡免费高清视频在线| 精品视频网站| 欧美69视频| 国产精品99一区二区| 精品国产亚洲日本| 国产传媒在线观看| 久久一区二区三区电影| 天堂8中文在线最新版在线| 国产精品a久久久久| 亚洲综合专区| 亚洲午夜电影| 国产精品成人自拍| 亚洲在线成人| 日本欧美不卡| 久久精品一本| 午夜电影一区| 99国产成+人+综合+亚洲欧美| 国产精品99一区二区三区| 日韩不卡一区二区三区 | 日韩精品一级二级 | 青草综合视频| 久久亚洲影院| 99久久久久国产精品| 九九九精品视频| 国产日韩精品视频一区二区三区| 亚洲欧美不卡| 天堂资源在线亚洲| 91综合网人人| 国产精品大片免费观看| 日韩在线麻豆| 另类激情亚洲| 欧美美女一区| 久久久国产精品网站| 日韩午夜视频在线| 免费人成黄页网站在线一区二区| 黄色不卡一区| 欧美日韩一区二区三区视频播放| caoporn视频在线| 99久久婷婷这里只有精品| 精品欧美日韩精品| 岛国av在线播放| 综合一区av| 日本欧美不卡| 精品网站aaa| 欧美国产日本| 国产精品美女午夜爽爽| 欧美一区久久| 国产精品亚洲人成在99www| 久久亚洲二区| 欧美精品黄色| 日韩精品欧美| 日韩精品午夜| 99精品在线免费在线观看| 日韩电影在线视频| 国产成人久久精品一区二区三区| 国产激情综合| 久久精品伊人| 精品国产91| 国产在线观看91一区二区三区| 久久精品国产在热久久| 国精品产品一区| 欧美天堂视频| 国产成年精品| 亚洲综合在线电影| 久久国产中文字幕| 亚洲一级影院| 999在线观看精品免费不卡网站| 亚洲免费网址| 日韩午夜视频在线| 欧美黄色一区| 91视频一区| 日韩啪啪电影网| 亚洲婷婷免费| 欧美专区一区二区三区| 亚洲一二av| 国产精品一区二区三区四区在线观看| 久久免费精品| 国产一区二区三区不卡av| 亚洲国产成人二区| 一区二区三区视频免费观看| 国产精品外国| 日韩和欧美一区二区三区| 国产精品一区二区三区四区在线观看| 亚洲91网站| 福利一区在线| 99精品美女| 久久高清免费观看| 国产精品成人自拍| 捆绑调教美女网站视频一区| 国产精品99免费看| 国产精品白丝久久av网站| 好吊一区二区三区| 在线综合视频| 国产一区二区中文| 三级欧美在线一区| 欧美一级久久| 高清久久一区| 久久亚洲风情| 国产精品一区二区精品视频观看 | 免费久久99精品国产| 日韩av一二三| 日韩av二区| 亚洲欧美日韩国产一区二区| 日韩av网站在线观看| 久久uomeier| 亚洲人成亚洲精品| 激情综合婷婷| 久久国产精品久久久久久电车| 国产精品一线天粉嫩av| 免费av一区| 国产美女视频一区二区| 播放一区二区| 国产日本精品| 日韩欧美看国产| 天堂av一区| 亚洲成人va| 日日摸夜夜添夜夜添国产精品| 伊人久久国产| 亚洲狼人精品一区二区三区| 久久av电影| 9色国产精品| 蜜桃久久av一区| 欧美午夜不卡影院在线观看完整版免费| 最新亚洲国产| 日韩久久电影| av中文资源在线资源免费观看| 国产精品一区二区三区av| 久久精品999| 国产精品久久久久久久久久齐齐 | 国产伦久视频在线观看| 欧美一区二区三区高清视频| 婷婷视频一区二区三区| 91精品国产自产在线观看永久∴ | 91国内精品| 亚洲精品97|