Встречается на собеседованиях • сегодня

Как Spring различает два эквивалентных объекта

Spring различает эквивалентные объекты (по equals()) через их идентичность (==) и хеш-коды. В контексте Spring-бинов:

  1. По умолчанию каждый бин - синглтон, и Spring возвращает один и тот же экземпляр
  2. Для prototype-бинов создаются разные экземпляры, даже если они equals()

Пример:

java
@Component
@Scope("prototype")
class MyBean {}

// В разных вызовах getBean() будут разные объекты
MyBean b1 = context.getBean(MyBean.class);
MyBean b2 = context.getBean(MyBean.class);
// b1.equals(b2) может быть true, но b1 != b2

Для не-бинов различие зависит от реализации equals()/hashCode(). Если они переопределены, то:

  • HashSet/HashMap будут считать объекты одинаковыми
  • Но при == они разные

Лучшая практика: всегда переопределять equals() и hashCode() согласованно для объектов, которые могут сравниваться.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы