SpringContextHolder.java 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package com.usthe.manager.support;
  2. import org.springframework.beans.BeansException;
  3. import org.springframework.context.ApplicationContext;
  4. import org.springframework.context.ApplicationContextAware;
  5. import org.springframework.stereotype.Component;
  6. /**
  7. * Spring的ApplicationContext的持有者,可以用静态方法的方式获取spring容器中的bean
  8. * @author tomsun28
  9. * @date 21:07 2018/4/18
  10. */
  11. @Component
  12. public class SpringContextHolder implements ApplicationContextAware {
  13. private static ApplicationContext applicationContext;
  14. @Override
  15. public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
  16. set(applicationContext);
  17. }
  18. private static void set(ApplicationContext applicationContext) {
  19. SpringContextHolder.applicationContext = applicationContext;
  20. }
  21. public static ApplicationContext getApplicationContext() {
  22. assertApplicationContext();
  23. return applicationContext;
  24. }
  25. @SuppressWarnings("unchecked")
  26. public static <T> T getBean(String beanName) {
  27. assertApplicationContext();
  28. return (T) applicationContext.getBean(beanName);
  29. }
  30. public static <T> T getBean(Class<T> tClass) {
  31. assertApplicationContext();
  32. return (T) applicationContext.getBean(tClass);
  33. }
  34. private static void assertApplicationContext() {
  35. if (null == SpringContextHolder.applicationContext) {
  36. throw new RuntimeException("applicationContext为空,请检查是否注入springContextHolder");
  37. }
  38. }
  39. }