Я хочу указать пользовательский BeanNamingStrategy
при настройке моего приложения с помощью Spring Boot. По умолчанию Spring Boot использует MethodNameStrategy
, который является BeanNamingStrategy
.Как указать BeanNamingStrategy с Spring Boot?
Причина, по которой я хочу это сделать, состоит в том, что у меня есть абстрактные родительские классы, которые мои потребители будут создавать подклассы конфигурации. Методы родительских классов имеют одинаковые имена друг для друга и поэтому не регистрируются для разных реализаций дочерних классов. В моем обычном BeanNamingStrategy
будет добавлено простое имя класса конфигурации для определенных имен компонентов.
Обычно в приложении весны вы можете сдать BeanNamingStrategy
с использованием метода setBeanNamingStrategy
для ApplicationContext
. Однако, если Spring Boot создает ApplicationContext
, как я могу это сделать?
Спасибо, но 'BeanNameGenerator', кажется, не вызывается для' @ Bean'-аннотированных методов (в классах @ @ Configuration-annotated), только для '@ Component'-аннотированных классов и для' @ Configuration' самозанятых классов. Есть ли другой объект, вызываемый для генерации имен фанов для методов, аннотированных с помощью '@ Bean'? – Kidburla
@ Kidburla это странно, потому что ['ConfigurationClassPostProcessor'] (http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/annotation/ConfigurationClassPostProcessor.html), который отвечает за для оценки классов '@ Configuration' ясно известно о' BeanNameGenerator': http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/annotation/ConfigurationClassPostProcessor.html#setBeanNameGenerator-org. springframework.beans.factory.support.BeanNameGenerator- –
В javadoc, который вы связали, явно говорится: «Обратите внимание, что эта стратегия не * применяется * к методам Bean». Мое понимание заключалось в том, что 'BeanNamingStrategy' использовался для методов« Bean », а« BeanNameGenerator »используется только для разрешения бит из аннотаций на уровне класса. – Kidburla