【发布时间】:2026-01-13 03:50:02
【问题描述】:
在我的 Spring Boot 应用中,我有事件,应该根据环境以各种方式报告。
我定义了interface IReporter 和几个实现,即LogReporter、EmailReporter、RpcReporter。未来也可能会出现新的实现。
现在我希望使用部分记者报告我的事件。子集必须在应用配置中指定如下(例如):
events.reporters=LogReporter,EmailReporter
或
events.reporters=${EVENT_REPORTERS}
或类似的东西。
因此,我希望处理事件的组件(比如class EventHandler)能够神奇地注入仅包含必要实现的List<IReporter> myReporters。
当然,如果创建了新的实现,唯一需要更新的必须是应用配置(而不是EventHandler 的代码)。
我熟悉注入所有可用的实现,只有@Primary 实现,或者用@Qualifier 挑选的特定实现。但看起来这些并不能解决我的问题。
【问题讨论】:
标签: spring spring-boot dependency-injection configuration