SpringBoot中其他普通類呼叫Spring管理的Service、dao等bean
在springboot的使用中,有時需要在其他的普通類中呼叫託管給spring的dao或者service,從而去操作資料庫。網上大多數的資料都是說新增一些註解什麼的,但是這都是不行的。
舉個使用情景:比如在伺服器在於硬體或者客戶端之間進行Socket通訊時,那麼如果說伺服器收到了一條訊息,需要去操作資料庫的話,怎麼去呼叫Service或者dao去操作資料庫呢?下面來看我給出的解決辦法:
(1)首先需要新建一個類,實現 ApplicationContextAware 介面。
@Component
public class SpringUtils implements ApplicationContextAware {
private static ApplicationContext applicationContext = null;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
if(SpringUtils.applicationContext == null){
SpringUtils.applicationContext = applicationContext;
}
}
//獲取applicationContext
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
//通過name獲取 Bean.
public static Object getBean(String name){
return getApplicationContext().getBean(name);
}
//通過class獲取Bean.
public static <T> T getBean(Class<T> clazz){
return getApplicationContext().getBean(clazz);
}
//通過name,以及Clazz返回指定的Bean
public static <T> T getBean(String name,Class<T> clazz){
return getApplicationContext().getBean(name, clazz);
}
}
(2)在通訊類中獲取ApplicationContext物件,然後去獲取需要的service 或者 dao。
然後就可以直接呼叫了。
---------------------
作者:嚴少來也
來源:CSDN
原文:https://blog.csdn.net/yft_android/article/details/79166793
版權宣告:本文為博主原創文章,轉載請附上博文連結!