Java Guru
Бизнес
Канал с вопросами и задачами с собеседований!
Загружаем канал…
Мы используем cookie для улучшения работы сайта и анализа статистики. Оставаясь на сайте, вы соглашаетесь с Политикой конфиденциальности.
Бизнес
Канал с вопросами и задачами с собеседований!
Как прогреть кэши в Spring Boot? Или вообще как выполнить что-то на старте Spring Boot приложения? Обычно такие операции делают в @PostConstruct или подписываются на событие ApplicationReadyEvent. Но у этих вариантов есть заметный минус. Если “прогрев” находится в @PostConstruct, как отключить его в тестах? Можно добавить флаг, сделать сабкласс и подменить его в тестовой конфигурации, но это не всегда помогает и часто выглядит как костыль. Более элегантный способ “прогреть кэши” Смотри: SpringApplication.run(...) возвращает полностью готовый контекст. Можно достать из него компонент и вызвать нужный метод “прогрева”. Код выглядит как на картинке: Плюс: В интеграционных тестах с @SpringBootTest метод main не запускается. Соответственно, код внутри него не выполняется. Никаких костыле…
Читать целиком💡 Java-совет: выбирай constructor injection вместо field injection Во многих проектах до сих пор можно встретить такое: @Component public class UserController { @Autowired private Logger logger; public void createUser(String username) { ... } } Работает, но хуже тестируется и прячет зависимости «за кулисами». Гораздо лучше - передавать зависимости через конструктор: @Component public class UserController { private final Logger logger; @Autowired public UserController(Logger logger) { this.logger = logger; } } Почему это лучше: • зависимости явно видны • класс становится иммутабельным • проще писать unit-тесты (можно подставить fake/mock) • меньше сюрпризов при инициализации Spring-контейнера Итог: если нет веской причины - предпо…
Читать целиком💡 Совет по Java С паттерн-матчингом для instanceof в Java можно объявлять переменную прямо внутри проверки. Это избавляет от лишнего каста и делает код чище. Пример: if (obj instanceof String s) { System.out.println("Длина строки: " + s.length()); } Java Guru
Просто о сложном: JIT-компилятор Чтобы ускорить работу приложения, JVM включает в дело Just-In-Time (JIT) компилятор. Он превращает часто выполняемый байткод в нативные машинные инструкции прямо во время исполнения. 🟢Как это работает — При старте приложения JVM интерпретирует байткод. — Когда видит, например, что метод вызывается часто (т.н. hot method), — JIT компилирует его в машинный код. — В следующий раз этот метод исполняется уже как нативный, без интерпретации. — Всё это происходит «на лету» — поэтому Java-программы разгоняются после первых секунд работы. 🟢Зачем нужен JIT Он сочетает плюсы интерпретации и компиляции: — Быстрый старт приложения (интерпретация). — Высокая производительность после разогрева (JIT). 🟢Что он умеет оптимизировать — Inlining: подставляет код…
Читать целикомТакже подписывайтесь на наши другие каналы в Максе: https://max.ru/javalib https://max.ru/bookofgeek
Ответ и объяснение — в Telegram Java Guru | Мы в Телеграм
Ответ и объяснение — в Telegram Java Guru | Мы в Телеграм
Ответ и объяснение — в Telegram Java Guru | Мы в Телеграм
Ответ и объяснение — в Telegram Java Guru | Мы в Телеграм
Ответ и объяснение — в Telegram Java Guru | Мы в Телеграм
Ответ и объяснение — в Telegram Java Guru | Мы в Телеграм