介绍
这篇文章将为大家详细讲解有关使用弹簧怎么动态注册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就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。