Я ищу способ получения автоматической конфигурации (значений), чтобы использовать их внутри регистрации бинов. Я не использую функцию сканирования компонентов и все еще хочу использовать инжектор конструктора. До сих пор я не нашел никакого способа сделать это, и нет документации, которая показывает, что должно быть сделано.
В следующем примере я хочу инициализировать PubSubTemplate
(spring gcp). Ктор принимает два параметра: PublisherFactory
и SubscriberFactory
. Им самим нужна GcpProjectIdProvider
.
Автоматическая конфигурация весной имеет значение для последнего. Как было сказано ранее, я не смог найти способ получить это значение.
beans {
bean<GcpProjectIdProvider> {
DefaultGcpProjectIdProvider()
}
bean<PublisherFactory>("publisher") {
DefaultPublisherFactory(ref())
}
bean<SubscriberFactory>("subscriber") {
DefaultSubscriberFactory(ref())
}
bean<PubSubOperations> {
PubSubTemplate(ref<PublisherFactory>("publisher"), ref<SubscriberFactory>("subscriber"))
}
}
Другой сервис будет использовать этот шаблон для выполнения некоторых операций:
open class FooBarServiceImpl(private val pubSubTemplate: PubSubTemplate) {
fun doSomething() {
pubSubTemplate.subscribe(...) { ... }
}
}
Проблема с кодом, который я показал, заключается в том, что GcpProjectIdProvider
не содержит правильную информацию. Эта информация доступна из автоматической конфигурации.