import org.springframework.beans.BeansException;import org.springframework.context.ApplicationContext;import org.springframework.context.ApplicationContextAware;import org.springframework.stereotype.Component;/** * 获取Spring上下文 * * @author kelin.ll * @date on 2019/7/18 */@Componentpublic class ApplicationContextProvider implements ApplicationContextAware { /** * 上下文对象实例 */ private static ApplicationContext applicationContext; @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { this.applicationContext = applicationContext; } /** * 获取applicationContext * * @return */ public static ApplicationContext getApplicationContext() { return applicationContext; } /** * 通过name获取 Bean. * * @param name * @return */ public static Object getBean(String name) { return getApplicationContext().getBean(name); } /** * 通过class获取Bean. * * @param clazz * @param* @return */ public static T getBean(Class clazz) { return getApplicationContext().getBean(clazz); } /** * 通过name,以及Clazz返回指定的Bean * * @param name * @param clazz * @param * @return */ public static T getBean(String name, Class clazz) { return getApplicationContext().getBean(name, clazz); }}
测试用例:
import com.provider.ServiceProviderApplication;import lombok.extern.slf4j.Slf4j;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;/** * @author kelin.ll * @date on 2019/7/18 */@RunWith(SpringJUnit4ClassRunner.class)@SpringBootTest(classes = ServiceProviderApplication.class)@Slf4jpublic class ApplicationContextProviderTest { @Test public void getBeanByNameTest(){ TaskService taskService = (TaskService)ApplicationContextProvider.getBean("taskService"); System.out.println(taskService.getAll()); } @Test public void getBeanByClassTest(){ TaskService taskService = ApplicationContextProvider.getBean(TaskService.class); System.out.println(taskService.getAll()); } @Test public void getBeanByNameAndClassTest(){ TaskService taskService = ApplicationContextProvider.getBean("taskService",TaskService.class); System.out.println(taskService.getAll()); }}