spring boot 如何动态替换bean?
替换Bean工具类
@Component
public class ApplicationContextUtil implements ApplicationContextAware {private static ApplicationContext applicationContext = null;@Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {if(this.applicationContext == null) {this.applicationContext = applicationContext;}}public static ApplicationContext getApplicationContext() {return applicationContext;}public static <T> T getBean(Class<T> clazz) {return getApplicationContext().getBean(clazz);}public static void replaceBean(String beanName, Object targetObj) throws NoSuchFieldException, IllegalAccessException {ConfigurableApplicationContext context = (ConfigurableApplicationContext)getApplicationContext();DefaultListableBeanFactory beanFactory = (DefaultListableBeanFactory) context.getBeanFactory();//反射获取Factory中的singletonObjects 将该名称下的bean进行替换Field singletonObjects = DefaultSingletonBeanRegistry.class.getDeclaredField("singletonObjects");singletonObjects.setAccessible(true);Map<String, Object> map = (Map<String, Object>) singletonObjects.get(beanFactory);map.put(beanName, targetObj);}
}
使用
@Autowiredprivate TestBean testBean;@Testpublic void updateBean() throws NoSuchFieldException, IllegalAccessException {System.out.println("before: " + testBean);ApplicationContextUtil.replaceBean("testBean", new TestBean("qq", 100));testBean = ApplicationContextUtil.getBean(TestBean.class);System.out.println("after: " + testBean);}
测试类
public class TestBean {String name;int age;public TestBean(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "TestBean{" +"name='" + name + '\'' +", age=" + age +'}';}
}
初始化Bean
@Beanpublic TestBean testBean(){return new TestBean("dreamzuora", 25);}
spring boot 如何动态替换bean?相关推荐
- java动态创建bean的意义_java相关:Spring Boot如何动态创建Bean示例代码
java相关:Spring Boot如何动态创建Bean示例代码 发布于 2020-3-20| 复制链接 摘记: 前言本文主要给大家介绍了关于Spring Boot动态创建Bean的相关内容,分享出来 ...
- java多个数据库数据进行访问_通过Spring Boot配置动态数据源访问多个数据库的实现代码...
之前写过一篇博客<Spring+Mybatis+Mysql搭建分布式数据库访问框架>描述如何通过Spring+Mybatis配置动态数据源访问多个数据库.但是之前的方案有一些限制(原博客中 ...
- mysql 多数据源访问_通过Spring Boot配置动态数据源访问多个数据库的实现代码
之前写过一篇博客<Spring+Mybatis+Mysql搭建分布式数据库访问框架>描述如何通过Spring+Mybatis配置动态数据源访问多个数据库.但是之前的方案有一些限制(原博客中 ...
- java手工注入bean_java相关:Spring中如何动态注入Bean实例教程
java相关:Spring中如何动态注入Bean实例教程 发布于 2020-3-8| 复制链接 摘记: 前言在Spring中提供了非常多的方式注入实例,但是由于在初始化顺序的不同,基于标注的注入方式, ...
- 【解决思路】Spring Boot:Error creating bean with name ‘xxxDao‘
[解决思路]Spring Boot:Error creating bean with name 'xxxDao' 问题重现 运行Spring Boot 项目是报错:Failed to load App ...
- Spring Boot 如何动态切换多数据源?
大约在19年的这个时候,老同事公司在做医疗系统,需要和HIS系统对接一些信息,比如患者.医护.医嘱.科室等信息.但是起初并不知道如何与HIS无缝对接,于是向我取经. 最终经过讨论采用了视图对接的方式, ...
- 17、Spring Boot普通类调用bean【从零开始学Spring Boot】
转载:http://blog.csdn.net/linxingliang/article/details/52013017 我们知道如果我们要在一个类使用spring提供的bean对象,我们需要把这个 ...
- java动态创建bean的意义_Spring Boot如何动态创建Bean示例代码
前言 本文主要给大家介绍了关于Spring Boot动态创建Bean的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. SpringBoot测试版本:1.3.4.RELEAS ...
- Spring boot + Mybatis动态多数据源实现
在项目开发中,有一些场景需要同时使用多个数据库,并且需要能够根据需求能够动态切换,下面介绍一种基于注解+aop的方式. 动态多数据源实现 Spring boot启动类(Application) 数据库 ...
最新文章
- 机器学习算法工程师的自我修养
- Android面试题目之(9) 幽灵引用
- android-oculus
- 漫画:如何用Zookeeper实现分布式锁?
- 恕我直言,你的模型可能并没看懂 prompt 在说啥
- Docker系列文章索引
- 彩色手绘情节人插画装饰素材,psd分层利于应用!
- Flickr 网站架构分析
- 车机开发之均衡器app开发
- java中将zip文件解压到指定目录下
- Java用Freemarker 生成word文档
- 引用还是传值——被打脸后才发现多年的理解是错的
- [小说]魔王冢(63)正牌蚩尤
- 关于CLASS , SEL, IMP的说明
- python 傅立叶函数_python-如何从图像中去除高频内容以进行傅立叶逆变换
- linux下的权限粘滞位
- java Eclipes配置黑色框架
- usaco 2.4 bessie come home
- PPT文件找回打开密码
- 针对此次iTunes12.1升级导致第三方用不了的解决方案
热门文章
- IOC操作Bean管理XML方式(创建对象和set注入属性)
- python如何实现选项功能_python几种常用功能如何实现 python几种常用功能实现代码实例...
- opencv 边缘平滑_基于OpenCV的车道检测实现(一)
- 公交查询系统 c语言,城市公交查询系统的设计任务书
- fastjson反序列化过滤字段属性_原创干货 | 从RMI入门到fastjson反序列化RCE
- php属性未定义,PHP-警告-未定义的属性:stdClass-修复?
- Java高级架构师需要掌握什么?
- Java开发人员需要掌握数据库的知识点有哪些?
- layui option 动态添加_layui select动态添加option的实例
- php软删除代码,PHP laeavel软删除以及软删除还原 易错点