@ConditionalOnMissingBean 如何实现覆盖第三方组件中的 Bean
![](/theme/default/default/images/main/eye-open.png)
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
![](/theme/default/default/images/main/icon-jing.png)
摘要: 自定义一个简单的Spring Boot组件
本文主要介绍了如何创建和配置一个自定义的Spring Boot组件olive-starter,并展示了如何在另一个项目olive-gateway中使用这个组件。
创建olive-starter项目
文章首先指导读者创建一个名为olive-starter的Spring Boot项目,提供了相关的pom.xml配置,特别指出在该文件中应避免引入spring-boot的插件,以确保其他工程可以通过maven install命令引入该组件。
定义接口和实现类
接下来,定义了一个加载路由的接口RouterService以及一个默认的实现类DefaultRouterServiceImpl。同时,提供了路由实体类RouterDO的代码和配置默认路由加载Bean的方法RouterConfig。
配置spring.factories
为了使自定义组件具备自动配置功能,文章指导创建META-INF文件夹和spring.factories文件,配置内容指向RouterConfig类。
创建olive-gateway项目并引用olive-starter
文章进一步展示了如何创建olive-gateway项目,并在其pom.xml文件中添加对olive-starter组件的依赖。然后创建了Spring Boot启动类GwApplication,并在main方法中获取并调用RouterService的getRouters方法。
自定义路由加载类
为了演示如何覆盖默认的路由加载类,文中引导读者创建了一个新的路由服务实现类CustomRouterServiceImpl,并通过再次启动olive-gateway项目来观察日志,确认CustomRouterServiceImpl已经取代了DefaultRouterServiceImpl。
文章结尾提示读者点赞和关注,表达了对读者的感谢。
想要了解更多内容?
![](/theme/default/default/images/main/icon-jing.png)
![](https://cdn.easycorp.cn/rongpm/upload/202312/f_39217d624bb2b42ce8f6322ebd7e573a.png)
![](https://cdn.easycorp.cn/rongpm/upload/202312/f_39217d624bb2b42ce8f6322ebd7e573a.png)