解決反射調(diào)用方法時獲取bean失敗的問題
1、問題描述
通過反射機制調(diào)用某個類的方法時,此類內(nèi)@Autowired注入失敗,并且事務(wù)回滾失敗。
2、原因
Class.forName(“className”).newInstance()
實例化對象后與Spring IOC容器無關(guān)(自己通過反射獲取的對象,沒有交給spring容器管理),所以@Autowired無法關(guān)聯(lián)注入對象也無法支持事務(wù)。
3、解決方案
通過applicationContext.getBean(“className”)來獲取bean。
@Component
public class SpringContextUtil implements ApplicationContextAware {
private static ApplicationContext applicationContext; // Spring應(yīng)用上下文環(huán)境
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
if(SpringContextUtil.applicationContext == null){
SpringContextUtil.applicationContext = applicationContext;
}
}
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
public static Object getBean(String name) throws BeansException {
return applicationContext.getBean(name);
}
public static Object getBean(String name, Class requiredType)
throws BeansException {
return applicationContext.getBean(name, requiredType);
}
// 通過class獲取Bean.
public static <T> T getBean(Class<T> clazz) {
return getApplicationContext().getBean(clazz);
}
}總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java while和do...while循環(huán)的使用方式
文章對比Java while與do-while循環(huán)的核心機制、語法差異、適用場景及錯誤防范,強調(diào)do-while至少執(zhí)行一次的特點,指出語法規(guī)范(如結(jié)尾分號)和性能優(yōu)化要點,并提及Java17模式匹配對循環(huán)的擴展支持2025-07-07
springboot整合shiro之thymeleaf使用shiro標(biāo)簽的方法
Thymeleaf 是一個跟 Velocity、FreeMarker 類似的模板引擎,它可以完全替代 JSP ,這篇文章主要介紹了springboot整合shiro之thymeleaf使用shiro標(biāo)簽的相關(guān)知識,需要的朋友可以參考下2021-10-10
SpringBoot+Vue3實現(xiàn)七牛云大視頻上傳
現(xiàn)代Web應(yīng)用中文件上傳很重要,本文用Vue.js和Spring Boot實現(xiàn)視頻上傳功能,同時使用七牛云作為存儲服務(wù),文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-07-07
mybatis多對多關(guān)聯(lián)實戰(zhàn)教程(推薦)
下面小編就為大家?guī)硪黄猰ybatis多對多關(guān)聯(lián)實戰(zhàn)教程(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-10-10
Springboot結(jié)合Mybatis-Plus實現(xiàn)業(yè)務(wù)撤銷回滾功能
本文介紹了如何在Springboot結(jié)合Mybatis-Plus實現(xiàn)業(yè)務(wù)撤銷回滾功能,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-12-12
Spring實現(xiàn)類私有方法的幾個問題(親測通用解決方案)
現(xiàn)實的業(yè)務(wù)場景中,可能需要對Spring的實現(xiàn)類的私有方法進(jìn)行測試。本文給大家分享Spring實現(xiàn)類私有方法面臨的幾個問題及解決方案,感興趣的朋友跟隨小編一起看看吧2021-06-06

