@PostConstruct :
package javax.annotation.* ;
Спецификация JSR-250 (Common Annotations for the Java™ Platform™) определяет аннотации @PostConstruct и @PreDestroy. С помощью этих аннотаций можно помечать методы бина, автоматически вызываемые после создания бина и перед тем как бин будет удален из контейнера соответственно.
Если появилась необходимость добавить какой-то код после создания bean'а, воспользуйтесь аннотацией @PostConstruct.
На момент вызова метода, использующего аннотацию @PostConstruct, все объекты, помеченные аннотацией @Autowired уже будут созданны.
- потому что, когда вызывается конструктор, компонент еще не инициализирован - то есть никакие зависимости не вводятся. В методе @PostConstruct компонент полностью инициализирован, и вы можете использовать зависимости.
- потому что это контракт, который гарантирует, что этот метод будет вызываться только один раз в жизненном цикле компонента. Может случиться (хотя и маловероятно), что компонент создается несколько раз контейнером во внутренней работе, но он гарантирует, что @PostConstruct будет вызываться только один раз.