springboot 手动创建bean实例并注册
手动注册bean
此种方式注册的bean在调用时将由spring进行创建,相当于延迟加载bean
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.stereotype.Component;
@Component public class ApplicationContextUtil implements ApplicationContextAware { private static ApplicationContext applicationContext; @Override public void setApplicationContext(ApplicationContext context) throws BeansException { applicationContext=context; } /** * 动态注入bean * @param requiredType 注入类 * @param beanName bean名称 */ public static Object registerBean(Class<?> requiredType,String beanName){ //将applicationContext转换为ConfigurableApplicationContext ConfigurableApplicationContext configurableApplicationContext = (ConfigurableApplicationContext) applicationContext; //获取BeanFactory DefaultListableBeanFactory defaultListableBeanFactory = (DefaultListableBeanFactory) configurableApplicationContext.getAutowireCapableBeanFactory(); //创建bean信息. BeanDefinitionBuilder beanDefinitionBuilder = BeanDefinitionBuilder.genericBeanDefinition(requiredType); //动态注册bean. defaultListableBeanFactory.registerBeanDefinition(beanName, beanDefinitionBuilder.getBeanDefinition()); //获取动态注册的bean. return configurableApplicationContext.getBean(requiredType); } }

![springboot 手动创建bean实例并注册
[编程语言教程]](https://www.zixueka.com/wp-content/uploads/2024/01/1706707131-9d494db7f9f530e.jpg)
