Это ожидаемое поведение в зависимости от того, как вы его настроили. x
должен быть правильно установлен в Bean2
после того, как весь applicationContext был запущен.
Чтобы понять, что происходит, обратите внимание, что Bean2
является зависимостью для Bean1
. Это означает, что Spring не может создать Bean1
до после создания Bean2
. Таким образом, сначала создается Bean2
, и вы видите, что x
является нулем в блоке init()
, потому что Bean1
еще не был создан, чтобы иметь возможность установить его значение.
Позже будет создан Bean1
, будет вызван его метод init()
, и значение для x
в Bean2
будет правильно установлено. Но это происходит спустя много времени после того, как Bean2
@PostConstruct
уже закончено.