package com.synqnc.util; import org.springframework.context.ApplicationContext; /** * @author wangyg * description SpringContextUtil * @date 2020/3/13 18:54 */ public class SpringContextUtil { //spring上下文 private static ApplicationContext applicationContext; /** * 实现ApplicationContextAware接口的回调方法,设置上下文环境 * @param applicationContext */ public static void setApplicationContext(ApplicationContext applicationContext){ if(null==SpringContextUtil.applicationContext) SpringContextUtil.applicationContext=applicationContext; } public static ApplicationContext getApplicationContext(){ return applicationContext; } /** * 通过name获取 Bean. * * @param name * @return */ public static Object getBean(String name) { return getApplicationContext().getBean(name); } /** * 通过name获取 Bean. * * @param clazz * @return */ public static <T> T getBean(Class<T> clazz) { return getApplicationContext().getBean(clazz); } /** * 通过name,以及Clazz返回指定的Bean * * @param name * @param clazz * @return */ public static <T> T getBean(String name, Class<T> clazz) { return getApplicationContext().getBean(name, clazz); } }
之后在微服务启动的时候设置上下文
public static void main(String[] args) { ConfigurableApplicationContext app = SpringApplication.run(BudataApplication.class, args); SpringContextUtil.setApplicationContext(app); }
使用非常简单
sendInstructionService = (SendInstructionService) SpringContextUtil.getBean("sendInstructionService");
原文:https://www.cnblogs.com/wygflying163/p/12673067.html