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())); } }