Ответ
Если имя бина не указано явно в аннотации (например, @Component("myBean")), Spring генерирует его автоматически, используя стратегию декапитализации (lowercase first letter) имени класса.
Правила генерации имени:
- Для обычного класса: имя бина = имя класса с приведением первой буквы к нижнему регистру.
- Для классов, имя которых начинается с двух или более заглавных букв (например,
URLService), имя бина сохраняется как есть (т.е.,URLService), что является особым случаем.
Примеры:
@Service
public class PaymentService {} // Имя бина: "paymentService"
@Repository
public class UserRepositoryImpl {} // Имя бина: "userRepositoryImpl"
@Component
public class APIHandler {} // Имя бина: "APIHandler" (особый случай)
Важно: Если в контексте существует несколько бинов одного типа, необходимо задавать им уникальные имена явно, иначе возникнет конфликт.