Ответ
@PostConstruct — это аннотация стандарта JSR-250 (не специфичная для Spring, но им поддерживаемая), которая помечает метод, выполняемый после инъекции зависимостей и перед использованием бина.
Назначение: Инициализация ресурсов, валидация конфигурации или выполнение стартовой логики после того, как все зависимости бина готовы.
Пример использования:
import javax.annotation.PostConstruct;
@Component
public class CacheService {
private Map<String, Object> cache;
@PostConstruct
public void initCache() {
// Метод вызовется после инъекции всех @Autowired полей
this.cache = new ConcurrentHashMap<>();
System.out.println("Cache initialized");
}
}
Ключевые правила:
- Метод должен быть
voidи не принимать параметров. - В классе может быть только один метод с
@PostConstruct. - Выполняется после инъекции зависимостей (через
@Autowired, конструктор или сеттеры). - Не работает для бинов с областью видимости
prototype(только дляsingletonи других долгоживущих). - Если метод выбрасывает исключение, создание бина прерывается.