TGViewer
Библиотека Java разработчика Библиотека Java разработчика @bookjava · 10.1K subscribers
Post #4321 1.1K
🧠 Spring Boot: ленивые зависимости через ObjectProvider

Иногда сервису не нужно всегда инжектить другую зависимость при старте — только иногда по ходу работы. Но @Autowired всё равно тянет её сразу, даже если она вам пока не нужна. Это бьёт по времени старта и может вызвать циклические зависимости.

💡 Решение: использовать ObjectProvider<T>.

Пример:


@Service
public class NotificationService {

private final ObjectProvider<EmailSender> emailSenderProvider;

public NotificationService(ObjectProvider<EmailSender> emailSenderProvider) {
this.emailSenderProvider = emailSenderProvider;
}

public void sendEmailIfEnabled(String to, String body) {
if (featureEnabled()) {
EmailSender sender = emailSenderProvider.getIfAvailable();
if (sender != null) {
sender.send(to, body);
}
}
}
}


📌 ObjectProvider:

▫️не создаёт бин сразу — ленивый доступ;
▫️ позволяет проверить наличие бина (getIfAvailable() / ifAvailable(...));
▫️можно использовать stream() — для коллекций бинов.

⚠️ Это не альтернатива DI. Это способ контролировать создание и использование бинов вручную, когда это действительно нужно.

📈 Отлично помогает:

▫️при борьбе с циклическими зависимостями;
▫️для optional-бинов;
▫️чтобы ускорить старт приложения.

📲 Мы в MAX

👉@BookJava
  • 👍 2
More from @bookjava
  1. Sep 23, 2026Что такое механизм try-with-resources? Механизм try-with-resources в Java — это конструкци…
  2. Sep 21, 2026📌 picocli — это современная библиотека для создания CLI-приложений на Java. Она упрощает…
  3. Sep 18, 2026Double-brace инициализация в Java — это идиома, которая используется для инициализации кол…
  4. Sep 16, 2026🧠@Value vs @ConfigurationProperties — не выбирай наобум Оба способа хороши для конфигурац…
  5. Sep 14, 2026🧠 Трюк с @EventListener в Spring — убираем лишний @TransactionalEventListener Когда тебе…
  6. Sep 10, 2026👩‍💻 HTTP-сервер на чистой Java за 30 минут Приглашаем на открытый урок. 🗓 21 сентября в…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →