From 1a2b07f01ba4616fd9e894dddf474b56d020158c Mon Sep 17 00:00:00 2001
From: zhubaomin <zhubaomin>
Date: 星期一, 07 四月 2025 15:18:51 +0800
Subject: [PATCH] 整理版本

---
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/springUtil/SpringContextUtil.java |   69 ++++++++++++++++++++++++++++++++++
 1 files changed, 69 insertions(+), 0 deletions(-)

diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/springUtil/SpringContextUtil.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/springUtil/SpringContextUtil.java
new file mode 100644
index 0000000..9808189
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/springUtil/SpringContextUtil.java
@@ -0,0 +1,69 @@
+package com.dy.common.springUtil;
+
+import org.springframework.beans.BeansException;
+import org.springframework.beans.MutablePropertyValues;
+import org.springframework.beans.factory.support.DefaultListableBeanFactory;
+import org.springframework.beans.factory.support.GenericBeanDefinition;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * 鑾峰彇Springboot涓婁笅鏂囷紝骞堕�氳繃涓婁笅鏂囧彲浠ヨ幏鍙栭厤缃枃浠朵腑鐨勯厤缃弬鏁般��
+ * SpringBoot鍚姩鏃讹紝鍙戠幇鏈被娉ㄨВ浜咢Component锛屼細鍔犺浇鏈被骞跺疄渚嬪寲锛�
+ * 瀹炰緥鍖栨椂鍙戠幇鏈被瀹炵幇浜嗘帴鍙pplicationContextAware锛屽垯浼氳皟鐢�
+ * setApplicationContext鏂规硶璁剧疆Spring涓婁笅鏂囧璞�
+ */
+@Component
+public class SpringContextUtil implements ApplicationContextAware {
+
+    private static ApplicationContext applicationContext = null;
+
+    @Override
+    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
+        if (SpringContextUtil.applicationContext == null) {
+            SpringContextUtil.applicationContext = applicationContext;
+        }
+    }
+
+    //鑾峰彇applicationContext
+    public static ApplicationContext getApplicationContext() {
+        return applicationContext;
+    }
+
+    //閫氳繃name鑾峰彇 Bean.
+    public static Object getBean(String name) {
+        return getApplicationContext().getBean(name);
+    }
+
+    //閫氳繃class鑾峰彇Bean.
+    public static <T> T getBean(Class<T> clazz) {
+        return getApplicationContext().getBean(clazz);
+    }
+
+    /**
+     * 鍚屾鏂规硶娉ㄥ唽bean鍒癆pplicationContext涓�
+     *
+     * @param beanName
+     * @param clazz
+     * @param original bean鐨勫睘鎬у��
+     */
+    public static synchronized void setBean(String beanName, Class<?> clazz, Map<String,Object> original) {
+        //checkApplicationContext();
+        DefaultListableBeanFactory beanFactory = (DefaultListableBeanFactory) applicationContext.getAutowireCapableBeanFactory();
+        if(beanFactory.containsBean(beanName)){
+            return;
+        }
+        //BeanDefinition beanDefinition = new RootBeanDefinition(clazz);
+        GenericBeanDefinition definition = new GenericBeanDefinition();
+        //绫籧lass
+        definition.setBeanClass(clazz);
+        //灞炴�ц祴鍊�
+        definition.setPropertyValues(new MutablePropertyValues(original));
+        //娉ㄥ唽鍒皊pring涓婁笅鏂�
+        beanFactory.registerBeanDefinition(beanName, definition);
+    }
+
+}
\ No newline at end of file

--
Gitblit v1.8.0