У меня есть приложение Dropwizard, которое должно генерировать десяток или около того компонентов для каждой из конфигураций в списке конфигурации. Такие вещи, как медицинские осмотры, кварцевые планировщики и т.д.Spring - программно сгенерирует набор бобов
Что-то вроде этого:
@Component
class MyModule {
@Inject
private MyConfiguration configuration;
@Bean
@Lazy
public QuartzModule quartzModule() {
return new QuartzModule(quartzConfiguration());
}
@Bean
@Lazy
public QuartzConfiguration quartzConfiguration() {
return this.configuration.getQuartzConfiguration();
}
@Bean
@Lazy
public HealthCheck healthCheck() throws SchedulerException {
return this.quartzModule().quartzHealthCheck();
}
}
У меня есть несколько экземпляров MyConfiguration, что все необходимые бобы, как это. Теперь я должен скопировать и вставить эти определения и переименовать их для каждой новой конфигурации.
Могу ли я как-то перебирать классы конфигурации и генерировать набор определений компонентов для каждого из них?
Мне было бы хорошо с подклассифицирующим решением или чем-либо, что было бы безопасным по типу, не заставляя меня копировать и вставлять тот же код и переименовывать методы когда-либо, когда я должен добавить новую услугу.
EDIT: Я хотел бы добавить, что у меня есть и другие компоненты, которые зависят от этих бобов (они вводят Collection<HealthCheck>
, например.)
Либо вам нужно регистрировать определения bean-компонентов, либо использовать некоторую магию контекстной иерархии (отдельные контексты для ваших модулей, в которых зависимости могут регистрироваться в родительском контексте), либо просто выполнять поиск служб, а не позволять весне вводить ваши (например, 'ApplicationContext # getBeansOfType'). –