bean在spring容器中的两种管理方式,spring中,可以将bean配置成具有内部bean的方式
00-1010 1.背景2。要求3。实施思路4。实施步骤1。模拟第三方jar包实现,并将其添加到Spring容器2中。自己提供一个实现3。替换jar包4的默认实现。测试一下。
00-1010在开发过程中,我们经常会引入别人编写的jar包来实现某些功能。别人的jar包一般都是自动注入Spring容器的。假设其他人是通过@Bean或者@Component注入的,并且没有添加@ConditionalXXX之类的注释,就无法替代其他人的实现。假设这个时候我只想换掉他们,怎么做呢?
目录
从上图可以看出,我们的需求是:
使用我们自己定义的BananaProductService来替换框架自带的AppleProductService,并将其添加到Spring容器中,同时确保全局只有一个ProductService的实现。
一、背景
我们在系统中根据@Bean或者通过@Component定义的Bean对象在Spring中会被转换成BeanDefinition对象。如果在Spring创建这些对象并将其添加到Spring容器之前,我们删除不需要的BeanDefinition对象并添加我们自己想要的BeanDefinition对象,能否实现?而Spring提供的bean definition RegistryPostProcessor接口正好可以帮助我们实现这个功能。
系统加载所有BeanDefinition对象后,bean definition registry postprocessor将回调。
二、需求
三、实现思路
四、实现步骤
1、模拟第三方jar包实现并加入Spring容器中
2、自己提供一个实现
代码地址
https://gitee.com/Huan 1993/spring-cloud-parent/tree/master/spring boot/spring boot-override-exists-bean
这是Spring容器中现有Bean替换示例的细节。更多关于Spring Bean容器替换的信息,请关注popular IT的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。