美文网首页
Spring运行时修改bean

Spring运行时修改bean

作者: TinyThing | 来源:发表于2021-02-02 17:22 被阅读0次

0x0 前言

原理很简单,spring本身提供了相应的bean移除、bean定义和生成接口,只需要调用相关接口即可实现功能

0x1 代码

//获取bean工厂
DefaultListableBeanFactory beanFactory = applicationContext.getDefaultListableBeanFactory();
//移除beanDefinition,注意,这里spring会帮我们把相关依赖也移除
beanFactory.removeBeanDefinition("testService");
//自定义一个新的bean class
RootBeanDefinition bd = new RootBeanDefinition(subClass);
bd.setScope(SCOPE_SINGLETON);
//注册bean definition,之后如果相关的bean
beanFactory.registerBeanDefinition("testService", bd);

经测试,以上方法替换bean之后,
在容器调用到testService之后会重新创建一个bean,执行其PostConstruce以及PreDestroy,并且其内部的EventListener和切面注解都会生效

相关文章

网友评论

      本文标题:Spring运行时修改bean

      本文链接:https://www.haomeiwen.com/subject/sermtltx.html