Нужно ли отбрасывать @Component при желании установить параметры компонента через JavaConfig? Есть ли другой способ?
У меня есть Spring bean, который аннотирован @Component. Но я хочу установить / указать параметры бина. Из того, что я могу сказать, мой единственный вариант, если я хочу придерживаться аннотаций, - это использовать класс @Configuration для указания параметров при создании экземпляра компонента. Однако в этом случае мне нужно отбросить @Component, поскольку объявить бин может класс @Configuration.
По сути, использование @Configuration и @Component может показаться взаимоисключающим. Аналогичным образом, объявление компонента в XML и аннотирование с помощью @Component также будут взаимоисключающими.
Я нахожу немного беспорядочным иметь объявления в двух возможных местах: в самом классе (если он аннотирован @Component и не требует специальной инициализации) и в классе JavaConfig. Я единственный, кто видит это так? Или есть способ указать параметры при использовании аннотации @Comonent?
1 ответ
Похоже, @Component победит @Bean, когда вы проводите по типу, но также похоже, что это нигде не задокументировано, так что вы можете не захотеть полагаться на него.
Если вы действительно хотите использовать полную аннотацию и не иметь конфигурации @Configuration или XML, то вы можете автоматически связать объект конфигурации со всеми необходимыми настройками. На мой взгляд, класс намного чище, если он принимает простые параметры конфигурации, не зная, откуда они взялись, поэтому я бы использовал класс @Configuration.