SpringContextHelper或者SpringContextHolder之類命名的類,主要是經過Spring上下文根據bean名稱獲取注入spring的對象。代碼相對簡單,本文不對代碼作詳細贅述。主要mark使用過程當中可能遇到的坑。java
@ComponentScan(basePackages = { "com.bingo", "com.demo" })
import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.stereotype.Component; import java.util.Arrays; /** * <Description> 獲取容器中的ApplicationContext<br> * * @author <br> * @version 1.0<br> * @taskId <br> * @CreateDate 2016年10月10日 <br> */ @Component public class SpringContextHelper implements ApplicationContextAware { /** * appCtx */ private static ApplicationContext appCtx; /** * Description: 此方法能夠把ApplicationContext對象inject到當前類中做爲一個靜態成員變量。<br> * * @param applicationContext ApplicationContext 對象. <br> * @author <br> * @taskId <br> */ @Override public void setApplicationContext(ApplicationContext applicationContext) { SpringContextHelper.setAppCtx(applicationContext); } /** * Description: 此方法能夠把ApplicationContext對象inject到當前類中做爲一個靜態成員變量。<br> * * @param applicationContext ApplicationContext 對象. <br> * @author <br> * @taskId <br> */ private static void setAppCtx(ApplicationContext applicationContext) { appCtx = applicationContext; } /** * Description: 獲取ApplicationContext<br> * * @return <br> * @author <br> * @taskId <br> */ public static ApplicationContext getApplicationContext() { return appCtx; } /** * Description:這是一個便利的方法,幫助咱們快速獲得一個BEAN <br> * * @param beanName beanName * @return <br> * @author <br> * @taskId <br> */ public static Object getBean(String beanName) { return appCtx.getBean(beanName); } /** * Description: 快速獲取Spring容器中的bean<br> * * @param <T> <br> * @param clazz <br> * @return <br> * @author <br> * @taskId <br> */ public static <T> T getBean(Class<T> clazz) { return appCtx.getBean(clazz); } /** * 打印全部的bean name <br> */ public static void printAllBeans() { System.out.println(Arrays.asList(appCtx.getBeanDefinitionNames())); } }