Java 如何從spring容器中獲取注入的bean對象
更新時間:2020年11月02日 11:40:06 作者:Marydon
這篇文章主要介紹了Java 如何從spring容器中獲取注入的bean對象,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
1.使用場景
控制層調用業(yè)務層時,控制層需要拿到業(yè)務層在spring容器中注入的對象
2.代碼實現
import org.apache.struts2.ServletActionContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils;
/**
* 從spring容器中獲取注入的bean對象
* @explain 必須獲取到ServletContext對象,Controller層以struts2為例
* @author Marydon
* @creationTime 2018年6月1日上午10:06:49
* @version 1.0
* @since
* @email marydon20170307@163.com
*/
public final class BeansUtils {
private static final Logger logger = LoggerFactory.getLogger(BeansUtils.class);
private static ApplicationContext ctx;
private static WebApplicationContext webCtx;
// 靜態(tài)代碼塊:加載該類時會被運行的代碼
static {
if (ctx == null) {
try {
// 入參需要拿到ServletContext對象
webCtx = WebApplicationContextUtils
.getRequiredWebApplicationContext(ServletActionContext.getServletContext());
logger.info("從web.xml容器中加載spring-config.xml");
} catch (Exception e) {
logger.info("直接加載spring-config.xml");
}
if (webCtx == null)
// 你可以自定義spring配置文件的文件名
ctx = new ClassPathXmlApplicationContext("spring-config.xml");
}
}
/**
* 通過beanID獲取bean實例
*
* @param beanID
* bean的代碼
* @return 返回對應的實例
* @throws RuntimeException
* bean沒有定義
*/
public static Object getBeanInstance(String beanID) throws RuntimeException {
logger.info("在spring容器中獲取Bean對象 ID=" + beanID);
Object obj;
if (BeansUtils.ctx == null) {
if (BeansUtils.webCtx.containsBeanDefinition(beanID)) {
obj = BeansUtils.webCtx.getBean(beanID);
} else {
logger.info("beanID=" + beanID + "沒有定義");
throw new RuntimeException(beanID + "沒有定義!");
}
} else {
if (BeansUtils.ctx.containsBeanDefinition(beanID)) {
obj = BeansUtils.ctx.getBean(beanID);
} else {
logger.info("beanID=" + beanID + "沒有定義");
throw new RuntimeException(beanID + "沒有定義!");
}
}
return obj;
}
}
以上就是Java 如何從spring容器中獲取注入的bean對象的詳細內容,更多關于Java獲取bean對象的資料請關注腳本之家其它相關文章!
相關文章
解析SpringBoot?搭建基于?MinIO?的高性能存儲服務的問題
Minio是Apache?License?v2.0下發(fā)布的對象存儲服務器,使用MinIO構建用于機器學習,分析和應用程序數據工作負載的高性能基礎架構。這篇文章主要介紹了SpringBoot?搭建基于?MinIO?的高性能存儲服務,需要的朋友可以參考下2022-03-03
Spring?Boot深入排查?java.lang.ArrayStoreException異常
這篇文章介紹了Spring?Boot深入排查?java.lang.ArrayStoreException異常,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-12-12
springcloud?gateway高級功能之集成apollo后動態(tài)刷新路由方式
這篇文章主要介紹了springcloud?gateway高級功能之集成apollo后動態(tài)刷新路由方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08

