SpringUtil.java 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package com.fdkankan.web.util;
  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. import java.util.Map;
  7. /**
  8. * 实现ApplicationContextAware接口,并加入Component注解,让spring扫描到该bean
  9. * 该类用于在普通Java类中注入bean,普通Java类中用@Autowired是无法注入bean的
  10. */
  11. @Component
  12. public class SpringUtil implements ApplicationContextAware {
  13. private static ApplicationContext applicationContext;
  14. @Override
  15. public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
  16. if(SpringUtil.applicationContext == null) {
  17. SpringUtil.applicationContext = applicationContext;
  18. }
  19. }
  20. /**
  21. * 获取applicationContext
  22. */
  23. public static ApplicationContext getApplicationContext() {
  24. return applicationContext;
  25. }
  26. /**
  27. *通过name获取 Bean.
  28. * @param name
  29. * @return
  30. */
  31. public static Object getBean(String name){
  32. return getApplicationContext().getBean(name);
  33. }
  34. /**
  35. * 通过class获取Bean.
  36. * @param clazz
  37. * @param <T>
  38. * @return
  39. */
  40. public static <T> T getBean(Class<T> clazz){
  41. return getApplicationContext().getBean(clazz);
  42. }
  43. /**
  44. * 通过name,以及Clazz返回指定的Bean
  45. * @param name
  46. * @param clazz
  47. * @param <T>
  48. * @return
  49. */
  50. public static <T> T getBean(String name,Class<T> clazz){
  51. return getApplicationContext().getBean(name, clazz);
  52. }
  53. public <T> Map<String, T> getBeansOfType(Class<T> clazz) {
  54. return applicationContext.getBeansOfType(clazz);
  55. }
  56. }