@Autowired注入為null的原因與解決方法
前言
我們經(jīng)常會通過@Autowired注解將某個類注到另一個類中,但是會發(fā)現(xiàn)注不進(jìn)去,報NULL。
原因
可能的原因有一下幾種:
(1)該類沒有托管給spring 管理
一般在類的上面添加@Component 就可以了
(2)你的這個類有被new出來的實例的,new 過的對象不會交給Spring容器管理 所以里面的 service或者dao注入不進(jìn)來。一般是指引用某些框架,你是繼承某個接口,但是這些框架默認(rèn)new過這個方法,比如MVC攔截的HandlerInterceptor類。
如果要new的這個類里有想用@autowired 自動注入的內(nèi)容,則最好不要去new這個類,否則自動注入無效,為null;
解決方法
解決辦法:要用這個類的時候,這個類也用@autowired 自動注入
有時候你確實需要在這個new 的類去注入某些類,但是用@Autowired 又注入為null,這時候我們需要手動去弄Spring容器中的Bean實現(xiàn)ApplicationContextAware接口。
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
@Component
public class BeanUtils implements ApplicationContextAware {
protected static ApplicationContext applicationContext ;
@Override
public void setApplicationContext(ApplicationContext arg0) throws BeansException {
if (applicationContext == null) {
applicationContext = arg0;
}
}
public static Object getBean(String name) {
//name表示其他要注入的注解name名
return applicationContext.getBean(name);
}
/**
* 拿到ApplicationContext對象實例后就可以手動獲取Bean的注入實例對象
*/
public static <T> T getBean(Class<T> clazz) {
return applicationContext.getBean(clazz);
}
}案列:
SysDictService sysDictService = BeanUtils.getBean(SysDictService.class);
以上就是@Autowired注入為null的原因與解決方法的詳細(xì)內(nèi)容,更多關(guān)于@Autowired注入為null的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
利用Java實現(xiàn)解析網(wǎng)頁中的內(nèi)容
這篇文章主要為大家詳細(xì)介紹了如何利用Java語言做一個解析指定網(wǎng)址的網(wǎng)頁內(nèi)容小應(yīng)用,文中的實現(xiàn)步驟講解詳細(xì),感興趣的可以嘗試下2022-10-10
Mybatis-plus 批量插入太慢的問題解決(提升插入性能)
公司使用的Mybatis-Plus操作SQL,用過Mybatis-Plus的小伙伴一定知道他有很多API提供給我們使用,但是批量插入大數(shù)據(jù)太慢應(yīng)該怎么解決,本文就詳細(xì)的介紹一下,感興趣的可以了解一下2021-11-11
spring中向一個單例bean中注入非單例bean的方法詳解
Spring是先將Bean對象實例化之后,再設(shè)置對象屬性,所以會先調(diào)用他的無參構(gòu)造函數(shù)實例化,每個對象存在一個map中,當(dāng)遇到依賴,就去map中調(diào)用對應(yīng)的單例對象,這篇文章主要給大家介紹了關(guān)于spring中向一個單例bean中注入非單例bean的相關(guān)資料,需要的朋友可以參考下2021-07-07
idea復(fù)制module(項目)并在一個窗口展示的教程詳解
這篇文章主要介紹了idea復(fù)制module(項目)并在一個窗口展示的方法,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-06-06

