Spring @PostConstruct, порядок выполнения? - PullRequest
0 голосов
/ 12 апреля 2019
Class User
{

        @Autowired
        private MyOtherBean;

        @PostConstruct
        public void init(){
                for(MyObject value : myOtherBean.getValues()){

                }
        }
}



Class MyOtherBean
{
        @Autowired
        private MyOtherBean1;

        @PostConstruct
        public void init(){
                MyOtherBean1.populateValues();
        }

        public Collection<MyObject> getValues(){

        }
}

Проблема: Прерывистый

Описание : Теперь в моем случае сначала вызывается PostCostruct для пользователя.MyOtherBean PostConstruct вызывается после того, что фактически заполняет значения.

Когда пользователь PostConstruct пытается получить getValues, он возвращает ноль и приводит к NPE.

Вопросы

  1. Есть ли способ избежать этого?
  2. Каков правильный стандартный способ избежать такой зависимости?

1 Ответ

0 голосов
/ 12 апреля 2019

@PostConstruct вызывается после построения Бина, установки свойств, но до внедрения в контекст.В идеале вы должны поместить туда любой код, который зависит от других bean-компонентов - поскольку эти bean-компоненты еще не были инициализированы.

https://hobione.wordpress.com/2009/04/22/jsf-postconstruct/

...