springboot獲取spring容器裡面的bean進行呼叫
阿新 • • 發佈:2019-02-02
業務場景:springcloud中的service端中,activity流程中一個流程發起之後由activity框架裡面的監聽一個節點結束,到另外一個節點發起。在這過程中,需要繼承activity裡面的介面然後呼叫service裡面的查詢方法。由於這個類沒有初始化在spring容器裡面進行bean的管理,所以注入service裡面的方法注入不進來。這個時候就需要去獲取這個具體service在spring容器裡面bean的地址去獲取才能去呼叫service裡面的方法。
具體實現方法:
public class SpringUtil implements ApplicationContextAware {
private static Logger logger = LoggerFactory.getLogger(SpringUtil.class);
private static ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
if(SpringUtil.applicationContext == null ) {
SpringUtil.applicationContext = applicationContext;
}
logger.info("ApplicationContext配置成功,applicationContext物件:"+SpringUtil.applicationContext);
}
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
public static Object getBean(String name) {
return getApplicationContext().getBean(name);
}
public static <T> T getBean(Class<T> clazz) {
return getApplicationContext().getBean(clazz);
}
public static <T> T getBean(String name,Class<T> clazz) {
return getApplicationContext().getBean(name,clazz);
}
}