В моем приложении Spring Boot у меня есть события , которые должны быть сообщены различными способами, в зависимости от среды.
Я определил interface IReporter
и несколько реализации, а именно LogReporter
, EmailReporter
, RpcReporter
. Также в будущем могут появиться новые реализации.
Теперь я хочу, чтобы о моих событиях сообщалось с помощью подмножества репортеров. Подмножество должно быть указано в конфигурации приложения следующим образом (например):
events.reporters=LogReporter,EmailReporter
или
events.reporters=${EVENT_REPORTERS}
или что-то подобное.
В результате, Я хотел бы, чтобы компонент, который обрабатывает события (скажем, class EventHandler
), имел магически внедренный List<IReporter> myReporters
, содержащий только необходимые реализации. И, конечно же, если создается новая реализация, обновлять нужно только конфигурацию приложения (а не код EventHandler
).
Я знаком с внедрением всех доступных реализаций, только @Primary
реализация или специфика c, выбранная с @Qualifier
. Но похоже, что это не решает мою проблему.