|
@@ -0,0 +1,65 @@
|
|
|
+package com.fdkankan.common.util;
|
|
|
+
|
|
|
+import org.springframework.beans.BeansException;
|
|
|
+import org.springframework.context.ApplicationContext;
|
|
|
+import org.springframework.context.ApplicationContextAware;
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
+
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 实现ApplicationContextAware接口,并加入Component注解,让spring扫描到该bean
|
|
|
+ * 该类用于在普通Java类中注入bean,普通Java类中用@Autowired是无法注入bean的
|
|
|
+ */
|
|
|
+@Component
|
|
|
+public class SpringUtil implements ApplicationContextAware {
|
|
|
+ private static ApplicationContext applicationContext;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
|
|
|
+ if(SpringUtil.applicationContext == null) {
|
|
|
+ SpringUtil.applicationContext = applicationContext;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取applicationContext
|
|
|
+ */
|
|
|
+ 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 <T>
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static <T> T getBean(Class<T> clazz){
|
|
|
+ return getApplicationContext().getBean(clazz);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 通过name,以及Clazz返回指定的Bean
|
|
|
+ * @param name
|
|
|
+ * @param clazz
|
|
|
+ * @param <T>
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static <T> T getBean(String name,Class<T> clazz){
|
|
|
+ return getApplicationContext().getBean(name, clazz);
|
|
|
+ }
|
|
|
+
|
|
|
+ public <T> Map<String, T> getBeansOfType(Class<T> clazz) {
|
|
|
+ return applicationContext.getBeansOfType(clazz);
|
|
|
+ }
|
|
|
+}
|