Комментарии 5
Обратите внимание - Spring Data заранее не знает о том, сколько бинов репозиториев она должна будет создать и впоследствии зарегистрировать в контексте. Соответственно, единственный способ решить данную проблему это динамически регистрировать бины.
Не понятно, к чему эта фраза. Spring точно так же заранее не знает сколько у вас в classpath классов помечено аннотацией @Component или @Service. Соответственно, он точно так же должен сканировать весь classpath, считывать аннотации, создавать бины и помещать их в хранилище. Поэтому "динамическая" регистрация бинов должна существовать задолго до Spring Data.
По мне так и то и то динамическое, только рассматриваемый способ более гибкий и кастомизируемый.
Просто два разных процесса регистрации бинов.
Один статический, управляемый конфигурацией и на него не повлиять после запуска приложения. Одна и та же конфигурация, породит одни и те же бины.
И динамический, когда бины создаются в ручную, динамически, в рантайме.
Согласен с комментариями выше. И «обычные» бины spring регистрирует динамически. Т.е динамически (в рантайме в при инициализации контекста сканируется classpath и регистрируются BeanDefinition’ы из классов Component и Configuration
Не понял секцию про AOT.
Spring AOT работает, в том числе, путём Annotation Processing-а, и теперь представьте, что APT видит использованиеBeanDefinitionRegistryPostProcessor
. Какой он из этого должен сделать вывод? Да никакой, и APT придётся анализировать Ваши исходники, чтобы понять, а что же Вы всё-таки там делаете.Но и с новым BeanRegistrar тоже же непонятно что внутри метода register. Может быть что угодно, и тоже придется парсить исходники. Ну или с обратной стороны, с тем же успехом можно скомпилить код метода BeanDefinitionRegistryPostProcessor. В общем не понятно чем новый апи в AOT помогает.
От конфигурации к динамике. Новый API по созданию бинов в Spring