zoukankan      html  css  js  c++  java
  • java手动注入bean到spring容器

    ApplicationContext applicationContext = SpringContextUtils.getApplicationContext();
    
    //将applicationContext转换为ConfigurableApplicationContext
    
    ConfigurableApplicationContext configurableApplicationContext = (ConfigurableApplicationContext) applicationContext;
    
    // 获取bean工厂并转换为DefaultListableBeanFactory
    
    DefaultListableBeanFactory defaultListableBeanFactory = (DefaultListableBeanFactory) configurableApplicationContext.getBeanFactory();
    
    this.defaultListableBeanFactory = defaultListableBeanFactory;
    
    String[] beanNamesForType = defaultListableBeanFactory.getBeanNamesForType(PayClient.class);
    
    System.out.println("beanNamesForType:" + Arrays.toString(beanNamesForType));
    
    // defaultListableBeanFactory.removeBeanDefinition("com.xxx.feign.PayClient");
    
    defaultListableBeanFactory.removeBeanDefinition(beanNamesForType[0]);
    
    // 通过BeanDefinitionBuilder创建bean定义
    
    BeanDefinitionBuilder beanDefinitionBuilder = BeanDefinitionBuilder.genericBeanDefinition(PayClient.class);
    
    // 设置属性userService,此属性引用已经定义的bean:userService,这里userService已经被spring容器管理了.
    
    // beanDefinitionBuilder.addPropertyReference("payClient", "payClient");
    
    // 注册bean
    
    defaultListableBeanFactory.registerBeanDefinition("com.xxx.feign.PayClient", beanDefinitionBuilder.getRawBeanDefinition());
    
    Object bean = SpringContextUtils.getBean(PayClient.class);
  • 相关阅读:
    列表、元组、字符串的相互转化
    python中的常用BIF
    python中的类型
    python内置模块
    打印字体颜色整理
    xml操作
    内置函数
    迭代器
    装饰器
    函数
  • 原文地址:https://www.cnblogs.com/bevis-byf/p/14866538.html
Copyright © 2011-2022 走看看