Встречается на собеседованиях • сегодня

Будет ли ленивым Bean с аннотацией Lazy, если он внедряется в другой Bean в Spring

Да, если бин помечен @Lazy, он будет инициализироваться только при первом обращении к нему, даже если внедряется в другой бин. Однако, если принимающий бин не ленивый, то при его создании Spring может инициализировать ленивый бин, если тот требуется для конструктора.

Пример:

java
@Configuration
public class AppConfig {
    @Bean
    @Lazy
    public Service lazyService() {
        return new Service();
    }

    @Bean
    public Client client(Service service) { // service будет создан здесь
        return new Client(service);
    }
}

Чтобы избежать этого, принимающий бин тоже нужно пометить @Lazy:

java
@Bean
@Lazy
public Client client(Service service) { // service создастся только при вызове client
    return new Client(service);
}
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы