现有个定制接口类型: Switcher
,
自己写的自动配置中, 会注入默认的一个 SwitcherImpl
实现类.
别的地方引用这个模块时, 也可以定制一个 Switcher
覆盖默认的.
这样就需要保证, 整个 Spring 容器中, 只能存在一个 Switcher
接口类型的实现类.
请问, 这个改怎么保证?
现有个定制接口类型: Switcher
,
自己写的自动配置中, 会注入默认的一个 SwitcherImpl
实现类.
别的地方引用这个模块时, 也可以定制一个 Switcher
覆盖默认的.
这样就需要保证, 整个 Spring 容器中, 只能存在一个 Switcher
接口类型的实现类.
请问, 这个改怎么保证?
1 回答2.5k 阅读✓ 已解决
2 回答2.5k 阅读✓ 已解决
2 回答1.7k 阅读
2 回答1.6k 阅读
2 回答1.3k 阅读
1 回答730 阅读✓ 已解决
1 回答1.2k 阅读
使用
@ConditionalOnMissingBean
即可不使用默认配置的项目手动创建自定义的bean即可,由于自动配置加了
@ConditionalOnMissingBean
,spring-boot检测到BeanFactory
内存在Switcher
类的Bean后便不会再创建默认的bean如果非默认的bean也是自动配置通过自动配置注册的,则需要使用注解
AutoConfigureBefore
保证它先于默认bean的自动配置类执行