В управляемом компоненте, @PostConstruct
назван после обычного конструктора Object Java.
Почему я использовал бы @PostConstruct
инициализировать бобом, вместо постоянного конструктора самим?
, потому что при вызове конструктора компонент еще не инициализирован, т.е. никакие зависимости не внедряются. В методе @PostConstruct
компонент полностью инициализирован, и вы можете использовать зависимости.
, потому что это контракт, который гарантирует, что этот метод будет вызван только один раз в жизненном цикле компонента. Может случиться (хотя и маловероятно), что контейнер создает экземпляр компонента несколько раз во внутренней работе, но это гарантирует, что @PostConstruct
будет вызван только один раз.
Если ваш класс выполняет всю свою инициализацию в конструкторе, то @PostConstruct
действительно является избыточным.
Однако, если в ваш класс внедрены зависимости с использованием методов установки, то конструктор класса не может полностью инициализировать объект, и иногда некоторая инициализация должна быть выполнена после того, как все методы установки были вызваны, отсюда вариант использования @PostConstruct
.