Какой метод вызывается после создания бина в Spring?

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

Ответ

После создания и внедрения зависимостей (dependency injection) бина в Spring вызывается его метод инициализации. Есть два основных способа его определить:

  1. Аннотация @PostConstruct (предпочтительный способ):

    import javax.annotation.PostConstruct;
    
    @Component
    public class DatabaseService {
        @PostConstruct
        public void init() {
            // Выполняется после инъекции всех зависимостей
            System.out.println("Bean is ready for use.");
            // Здесь обычно: загрузка кэша, проверка конфигурации, открытие соединений
        }
    }

    Почему предпочтительнее: Это стандарт JSR-250, который не привязывает ваш код к Spring API.

  2. Реализация интерфейса InitializingBean:

    import org.springframework.beans.factory.InitializingBean;
    
    @Component
    public class CacheManager implements InitializingBean {
        @Override
        public void afterPropertiesSet() throws Exception {
            // Аналогично @PostConstruct
            this.loadCache();
        }
    }

Порядок вызова: Конструктор -> Внедрение зависимостей (@Autowired) -> @PostConstruct / afterPropertiesSet().