Что делает аннотация @PostConstruct в Spring?

«Что делает аннотация @PostConstruct в Spring?» — вопрос из категории Spring, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

@PostConstruct — это аннотация JSR-250 (Java Common Annotations), которая помечает метод, выполняемый после внедрения зависимостей (DI) и перед готовностью бина к использованию.

Основное назначение:

  • Инициализация ресурсов (кэшей, подключений).
  • Валидация конфигурации бина.
  • Выполнение предварительных вычислений.

Ключевые правила:

  • Метод должен быть void и не принимать параметров.
  • Вызывается только один раз за жизненный цикл бина.
  • Является альтернативой интерфейсу InitializingBean или атрибуту init-method в XML.

Пример использования:

@Service
public class CacheService {
    private Map<String, Object> cache;

    @PostConstruct
    public void initCache() {
        this.cache = new ConcurrentHashMap<>();
        // Предзагрузка данных в кэш
        cache.put("config", loadConfiguration());
    }
}

Важно: Метод @PostConstruct гарантированно выполняется после полного завершения инъекции всех зависимостей (@Autowired, @Inject).