使用弹簧怎么动态注册bean

  介绍

这篇文章将为大家详细讲解有关使用弹簧怎么动态注册bean,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

<强>我。主动注册Bean支持

借助BeanDefinition来实现Bean的定义,从最终的使用来看,代码比较少,几行而已

public  & lt; T>, T  registerBean(名称、String  Class, clazz,,对象…,args), {   ,,BeanDefinitionBuilder  BeanDefinitionBuilder =, BeanDefinitionBuilder.genericBeanDefinition (clazz);   ,,if  (args.length 祝辞,0),{   ,,,,for  (Object  arg : args), {   ,,,,,,beanDefinitionBuilder.addConstructorArgValue (arg);   ,,,,}   ,,}   ,,BeanDefinition  BeanDefinition =, beanDefinitionBuilder.getRawBeanDefinition ();   ,   ,,BeanDefinitionRegistry  beanFactory =, (BeanDefinitionRegistry), applicationContext.getBeanFactory ();   ,,beanFactory.registerBeanDefinition(名称,beanDefinition);   ,,return  applicationContext.getBean(名字,,clazz);   }

测试如下

import  com.github.hui.story.quickstory.server.VisitService;   import  lombok.ToString;   import  org.springframework.beans.factory.annotation.Autowired;   import  org.springframework.beans.factory.config.BeanDefinition;   import  org.springframework.beans.factory.support.BeanDefinitionBuilder;   import  org.springframework.beans.factory.support.BeanDefinitionRegistry;   import  org.springframework.context.ConfigurableApplicationContext;   import  org.springframework.stereotype.Component;      @ component   public  class  BeanHolder  {   private 才能final  ConfigurableApplicationContext  applicationContext;      public 才能;BeanHolder (ConfigurableApplicationContext  applicationContext), {   ,,,this.applicationContext =, applicationContext;   ,,,init ();   ,,}      public 才能;void  init (), {   ,,,InrSer  ser =, registerBean (“test",, InrSer.class);   ,,,ser.name =,“一灰“;   ,,,ser.uid =, 22;   ,,,System.out.println (ser);      ,,,InrSer  ser2 =, registerBean (“test2",, InrSer.class,,“一灰灰Blog",, 20);   ,,,System.out.println (ser2);   ,,}      @ToString才能   public 才能static  class  InrSer  {   ,,,private  String 名称;   ,,,private  Integer  uid;      ,,@ autowired   ,,,private  VisitService  visitService;      ,,,public  InrSer (), {   ,,,}      ,,,public  InrSer(名称、String  Integer  uid), {   ,,,,,this.name =,名称;   ,,,,,this.uid =, uid;   ,,,}   ,,}      private 才能;& lt; T>, T  registerBean(名称、String  Class, clazz,,对象…,args), {   ,,,BeanDefinitionBuilder  BeanDefinitionBuilder =, BeanDefinitionBuilder.genericBeanDefinition (clazz);   ,,,if  (args.length 祝辞,0),{   ,,,,,for  (Object  arg : args), {   ,,,,,,,beanDefinitionBuilder.addConstructorArgValue (arg);   ,,,,,}   ,,,}   ,,,BeanDefinition  BeanDefinition =, beanDefinitionBuilder.getRawBeanDefinition ();      ,,,BeanDefinitionRegistry  beanFactory =, (BeanDefinitionRegistry), applicationContext.getBeanFactory ();   ,,,beanFactory.registerBeanDefinition(名称,beanDefinition);   ,,,return  applicationContext.getBean(名字,,clazz);   ,,}   }

输出如下

使用弹簧怎么动态注册bean

关于使用弹簧怎么动态注册bean就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。

使用弹簧怎么动态注册bean