Spring运行时修改bean

2021-02-02  本文已影响0人  TinyThing

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和切面注解都会生效

上一篇 下一篇

猜你喜欢

热点阅读