Потому что Spring сначала устанавливает ссылки на другие bean-компоненты. (Проводка из бобов)
После этого будут вызваны методы init.
Поскольку ваш установщик test2 указывает на ссылку test1 в конфигурации контекста вашего приложения, он будет вызван первым.
---------- редактировать ------------
Область действия прототипа немного хитрая, поскольку она ведет себя по-разному в зависимости от того, является ли ваш bean-объект с прототипом прокси-сервером или нет.
Если вы получите прототипный компонент непосредственно из контекста приложения, как вы это сделали, вы будете каждый раз получать новый экземпляр. Установка имени для первого экземпляра не повлияет на имя второго экземпляра, который вы записываете в конце.
Но если в контекст приложения ссылается на bean-объект области действия-прототип из другого singleton bean-компонента, вводится прокси. Этот прокси будет даже переключать фактически вызванный экземпляр для каждого вызова метода . Это будет более раздражающим, так как:
Test1 t4 = t3.getName();
t4.setName1("lala");
assertEquals(null,t4.getName1()); //will be true
Но, пожалуйста, проверьте это, так как это то, что я предполагаю, что это делает. Я не проверял это по коду.