前言

本文主要给大家介绍了关于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小时内与您取得联系。