Я уже вовсю юзаю Spring, где на каждый "пук" ложиться @autowired. Все отлично работает, удобно и просто до обалдения. Но в один прекрасный момент я понял, что я ничего не понял) Как это работает? Коллеги! Помогите разобраться...
Интересует пример для чайников... Как без Spring проинжектить экземпляр одного класса в поле другого? Может ссылку простую дадите, или в комментах объясните.

ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Так мне кажется, хе-хе, но я могу ошибаться. Если кто поправит, буду очень рад.
Ппц, как-то сложно написал. Вообщем, все реализовано через механизм рефлексии.
Находить второй бин через рефлекцию. Создаешь кота через newInstance конструктора, в качестве аргумента передаешь первый бин.
Я бы так сделал, но зачем тебе собственный велосипед придумывать?
В середине там только джава, и используются инструметны джавы, в т. ч. и отражение.
Бин проходит несколько этапов инициализации, от создания биндифинишинов до обработки бина пост процессором (ами)
тут кратко о каждом этапе.
Ладно, мой вопрос видимо тяжеловат для нашего сообщества. Это, кстати, вопрос с собеседования когда декларируешь знание Spring или других контейнеров, правда, выше джуниора.
Для такого класса Кет
метод инжекта приблизительно такой. Это частный случай, без дженериков и типов классов, без проверок и написан на скорую руку за 5 мин.
Далее это все проксируется и выдается как бин из класса Cat с проинициализированым полем private Animal animal;.
Это самый примитивизм для поля. Для конструкторов или сетеров и гетеров будет ещё сложнее.
И чуть не забыл, аннотацию надо отмаркать
Совсем оффтоп… А предшественник то вм80 еще и эстетически прекрасным был!
Качаем и читаем тут
Например:
Понимание контейнера инверсии контроля (IoC) Spring
А лучше тут читать
Ну или на худой конец Бориcова посмотреть