Spring PostConstruct контейнера

Как я могу запустить некоторый код внутри контейнера Spring после загрузки всех компонентов? Я знаю, что могу использовать @PostConstruct для одного bean-компонента, но я хотел бы запустить этот фрагмент кода после вызова всех PostConstruct. Возможно ли?

---ОБНОВЛЕНИЕ---

Я пытался следовать пути ApplicationListener, это реализация:

@Component
public class PostContructListener implements ApplicationListener<ContextRefreshedEvent> {

    private static Logger log = LoggerFactory.getLogger(PostContructListener.class);

    public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {
        Collection<Initializable> inits= contextRefreshedEvent.getApplicationContext().getBeansOfType(Initializable.class).values();
        for (Initializable initializable : inits) {
            try{
                log.debug("Initialization {} ",initializable.getClass().getSimpleName());
                initializable.init();
            }catch(Exception e){
                log.error("Error initializing {} ",initializable.getClass().getSimpleName(),e);
            }
        }
    }
}

Применив интерфейс "Инициализируемый" ко всем сервисам, я получил то, что мне было нужно, как каждый раз я ломал все автопровода, не могу понять почему, но вроде как подключен к новому интерфейсу "Инициализируемый":

java.lang.IllegalArgumentException: Can not set com.service.MyService field com.controller.RestMultiController.myService to com.sun.proxy.$Proxy41

person Tobia    schedule 25.04.2016    source источник


Ответы (1)


Я думаю, вам это нужно.

public class SpringListener implements ApplicationListener<ContextRefreshedEvent>{

        public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent ) {
                 // do things here
        }
    }

http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#context-functionality-events

person Duncan    schedule 25.04.2016
comment
Он вызывается дважды после весенней загрузки ... можете ли вы сказать мне, почему? - person Tobia; 01.06.2016
comment
stackoverflow.com/ вопросы/6164573/ - person Duncan; 01.06.2016