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