全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Spring Boot如何动态创建Bean示例代码

前言

本文主要给大家介绍了关于Spring Boot动态创建Bean的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。

SpringBoot测试版本:1.3.4.RELEASE

参考代码如下:

package com.spring.configuration; 
 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.beans.factory.support.BeanDefinitionBuilder; 
import org.springframework.beans.factory.support.DefaultListableBeanFactory; 
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; 
import org.springframework.context.ApplicationContext; 
import org.springframework.context.ConfigurableApplicationContext; 
import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.jdbc.core.JdbcTemplate; 
 
@Configuration 
/** 
 * 这里的conditional是一个可选条件,表示当这个表达式为true的时候,才动态创建bean 
 */ 
@ConditionalOnExpression("${my.configuration.enabled}") 
public class DynamicConfiguration 
{ 
 @Autowired 
 private ApplicationContext applicationContext; 
  
 /** 
  * 这个方法返回Runnable只是一个幌子,最重要的是执行方法里面的代码 
  */ 
 @Bean 
 public Runnable dynamicConfiguration() throws Exception 
 { 
  ConfigurableApplicationContext context = (ConfigurableApplicationContext)applicationContext; 
  DefaultListableBeanFactory beanFactory = (DefaultListableBeanFactory)context.getBeanFactory(); 
   
  BeanDefinitionBuilder beanDefinitionBuilder = BeanDefinitionBuilder.rootBeanDefinition(UserService.class); 
  /** 
   * 设置属性 
   */ 
  beanDefinitionBuilder.addPropertyValue("name", "myConfigure"); 
  beanDefinitionBuilder.addPropertyValue("jdbcTemplate", applicationContext.getBean(JdbcTemplate.class)); 
   
  /** 
   * 注册到spring容器中 
   */ 
  beanFactory.registerBeanDefinition("userService", beanDefinitionBuilder.getBeanDefinition()); 
  return null; 
 } 
} 
class UserService 
{ 
 private String name; 
 private JdbcTemplate jdbcTemplate; 
 public String getName() 
 { 
  return name; 
 } 
 public void setName(String name) 
 { 
  this.name = name; 
 } 
 public JdbcTemplate getJdbcTemplate() 
 { 
  return jdbcTemplate; 
 } 
 public void setJdbcTemplate(JdbcTemplate jdbcTemplate) 
 { 
  this.jdbcTemplate = jdbcTemplate; 
 } 
} 

之后,就可以使用如下方式获取对象了

applicationContext.getBean(UserService.class);
applicationContext.getBean("userService", UserService.class)

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。


# springboot  # 创建  # bean  # spring  # boot  # 动态bean  # Spring创建Bean的6种方式详解  # Spring创建Bean的过程Debug的详细流程  # spring实现bean对象创建代码详解  # spring Bean创建的完整过程记录  # Spring创建bean对象三种方式代码实例  # Spring创建bean实例的几种方式分享  # Spring Bean的定义及三种创建方式  # 是一个  # 相关内容  # 说了  # 不多  # 给大家  # 可选  # 这篇文章  # 只是一个  # 谢谢大家  # 最重要的是  # 就可以  # 有疑问  # springframework  # factory  # beans  # configuration  # annotation  # org  # import 


相关文章: 制作网站的公司有哪些,做一个公司网站要多少钱?  香港服务器选型指南:免备案配置与高效建站方案解析  网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?  山东云建站价格为何差异显著?  佛山企业网站制作公司有哪些,沟通100网上服务官网?  如何用西部建站助手快速创建专业网站?  如何快速登录WAP自助建站平台?  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  威客平台建站流程解析:高效搭建教程与设计优化方案  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  网站设计制作公司地址,网站建设比较好的公司都有哪些?  ,石家庄四十八中学官网?  制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?  较简单的网站制作软件有哪些,手机版网页制作用什么软件?  Android使用GridView实现日历的简单功能  常州企业建站如何选择最佳模板?  网站制作网站,深圳做网站哪家比较好?  如何通过服务器快速搭建网站?完整步骤解析  如何用搬瓦工VPS快速搭建个人网站?  个人网站制作流程图片大全,个人网站如何注销?  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?  制作宣传网站的软件,小红书可以宣传网站吗?  建站上传速度慢?如何优化加速网站加载效率?  如何在万网ECS上快速搭建专属网站?  建站之星如何开启自定义404页面避免用户流失?  大连网站制作公司哪家好一点,大连买房网站哪个好?  建站之星与建站宝盒如何选择最佳方案?  实例解析Array和String方法  高性能网站服务器部署指南:稳定运行与安全配置优化方案  高端建站三要素:定制模板、企业官网与响应式设计优化  制作网站的基本流程,设计网站的软件是什么?  网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?  *服务器网站为何频现安全漏洞?  网站制作软件有哪些,制图软件有哪些?  C++如何使用std::optional?(处理可选值)  c# await 一个已经完成的Task会发生什么  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  创业网站制作流程,创业网站可靠吗?  北京网站制作的公司有哪些,北京白云观官方网站?  专业商城网站制作公司有哪些,pi商城官网是哪个?  可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?  如何在Golang中指定模块版本_使用go.mod控制版本号  平台云上自助建站如何快速打造专业网站?  如何配置WinSCP新建站点的密钥验证步骤?  如何彻底删除建站之星生成的Banner?  焦点电影公司作品,电影焦点结局是什么?  如何用AWS免费套餐快速搭建高效网站?  开心动漫网站制作软件下载,十分开心动画为何停播? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。