springboot 使用上下文獲取bean
問題
在使用springboot開發(fā)項目過程中,有些時候可能出現(xiàn)說會有在spring容器加載前就需要注入bean的類,這個時候如果直接使用@Autowire注解,則會出現(xiàn)控制針異常!
解決辦法
如下:
創(chuàng)建一個springContextUtil類
package cn.eangaie.appcloud.util;
import org.springframework.context.ApplicationContext;
public class SpringContextUtil {
private static ApplicationContext applicationContext;
//獲取上下文
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
//設(shè)置上下文
public static void setApplicationContext(ApplicationContext applicationContext) {
SpringContextUtil.applicationContext = applicationContext;
}
//通過名字獲取上下文中的bean
public static Object getBean(String name){
return applicationContext.getBean(name);
}
//通過類型獲取上下文中的bean
public static Object getBean(Class<?> requiredType){
return applicationContext.getBean(requiredType);
}
}
在AppcloudApplication.class 啟動類里邊,將初始化該類,并將context注入進去
public class AppcloudApplication {
public static void main(String[] args) {
ApplicationContext context=SpringApplication.run(AppcloudApplication.class, args);
SpringContextUtil.setApplicationContext(context);
}
}
在需要注入bean的地方,使用getBean(bean名稱)的方式獲取
MessageTemplateController messageTemplateController= (MessageTemplateController) SpringContextUtil.getBean("messageTemplateController");
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java NIO 文件通道 FileChannel 用法及原理
這篇文章主要介紹了Java NIO 文件通道 FileChannel 用法和原理,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-01-01
java synchronized同步靜態(tài)方法和同步非靜態(tài)方法的異同
這篇文章主要介紹了java synchronized同步靜態(tài)方法和同步非靜態(tài)方法的異同的相關(guān)資料,需要的朋友可以參考下2017-01-01
深入探究Bean生命周期的擴展點Bean Post Processor
在Spring框架中,Bean生命周期的管理是非常重要的一部分,在Bean的創(chuàng)建、初始化和銷毀過程中,Spring提供了一系列的擴展點,其中,Bean Post Processor(后處理器)是一個重要的擴展點,它能夠在Bean的初始化前后做一些額外的處理,本文就和大家一起深入探究2023-07-07

