Библиотека джависта | Java, Spring, Maven, Hibernate
24.8K subscribers
1.88K photos
38 videos
42 files
2.67K links
Все самое полезное для Java-разработчика в одном канале.

Список наших каналов: https://yangx.top/proglibrary/9197

Для обратной связи: @proglibrary_feeedback_bot

По рекламе: @proglib_adv

РКН: https://gosuslugi.ru/snet/67a5bbda1b17b35b6c1a55c4
加入频道
Как и где Spring ищет бины?

Spring ищет бины с помощью сканирования классов в указанных пакетах, используя аннотации (@Component, @Service, @Repository, @Controller и кастомные с @Component внутри).

Сканирование начинается с пакета, переданного в @ComponentScan или (по умолчанию) из того, где находится @SpringBootApplication (которая включает @ComponentScan).

Если бин не помечен аннотацией, его можно зарегистрировать вручную через @Bean в @Configuration-классе, BeanDefinitionRegistry или XML-конфиг.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
Пора ли перейти на Quarkus или Micronaut вместо Spring Boot?

Java постоянно развивается: новые фичи появляются, сборки становятся умнее, а в продакшене до сих пор царит Spring Boot. Да, он мощный, универсальный, но медленный старт, гигантский оверхед, живёт по инерции.

Quarkus и Micronaut стартуют быстрее, кушают меньше памяти, заточены под облака и serverless. Всё вроде бы красиво — но если что-то сломается, вместо «гугли решение» услышишь «пиши ишью на GitHub, может через полгода поправят».

💬 Вопрос к вам:

— Стоит ли бросать Spring Boot в 2025 ради Quarkus или Micronaut?
— Или проверенная тяжеловесная классика всё ещё надёжнее молодой крови?

🐸 Библиотека джависта #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
🆕 Java Digest: подборка материалов

🔹 Как работает память в JVM

Глубокий анализ архитектуры памяти Java Virtual Machine и особенностей управления памятью. Уникальная информация для улучшения производительности ваших Java-приложений.

🔹 Ускорение Spring REST API на 200%

Spring удобен, но его абстракции могут замедлять работу API. Рассмотрите способы избавиться от ненужных накладных расходов и значительно увеличить производительность API.

🔹 Caffeine анализ кода

Статья описывает Caffeine с использованием алгоритма TinyLFU. Рассматриваются структуры данных, методы и старение данных для поддержания актуальности кэша.

🐸 Библиотека джависта #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
😮 Топ-вакансий для джавистов за неделю

Java-разработчик в Маркет — от 180 000 до 350 000 ₽, офис (Москва, Санкт-Петербург, Нижний Новгород)

Java-разработчик — от 100 000 ₽, гибрид (Москва)

Руководитель команды разработки / Team Lead (Java/Kotlin) — от 300 000 ₽, гибрид (Москва)

Java разработчик — до 500 000 ₽, гибрид (Москва, Санкт-Петербург)

➡️ Еще больше топовых вакансий — в нашем канале Java jobs
Please open Telegram to view this post
VIEW IN TELEGRAM
🆕 Spring Framework v7.0.0-M3

🔹 Поддержка JDK 17-27 — новая версия требует более современных версий JDK.
🔹 Удаление устаревших API — больше не поддерживаются аннотации из javax.annotation и javax.inject.
🔹 Миграция на Jakarta EE 11 — обновления в работе с сервлетами и WebSocket.
🔹 Усовершенствования для Kotlin — поддержка Kotlin 2.x и отказ от старых решений.
🔹 Изменения в HttpHeaders API — улучшена обработка заголовков с учетом их нечувствительности к регистру.

🔗 Подробнее по ссылке

🐸 Библиотека джависта #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ Инструмент недели: JMH (Java Microbenchmarking Harness)

JMH — это фреймворк для точного микробенчмаркинга в Java. Он предназначен для создания тестов производительности, которые помогают анализировать, как различные изменения в коде влияют на его эффективность.

Фичи: измерение времени выполнения на уровне микроопераций, поддержка сложных случаев оптимизации JVM, вывод подробной статистики, возможность настройки параметров теста, точные результаты без влияния JVM-оптимизаций.

🔗 JMH на GitHub

🐸 Библиотека джависта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 IT Breaking Memes — 30 000 ₽ за самую смешную IT-новость

Библиотека программиста запускает конкурс, который взорвет вашу ленту: создайте самую смешную альтернативную версию реальной IT-новости!

👾 Правила просты:
1. Берете настоящую новость из мира технологий.
2. Переписываете ее так, чтобы смеялись все.
3. Получаете деньги и славу.

🏆 Призы:
- 1 место: 30 000 ₽ + статус ведущего нового юмористического IT-канала
- 2 и 3 место: по 5 000 ₽ + вечный почет в IT-сообществе

Пример:
Реальная новость: «Гугл создала модель для общения с дельфинами».

Смешная альтернатива: «Нейросеть от Гугл обрабатывает видеопоток с камеры в свинарнике. ИИ следит, сколько свинья находится возле кормушки, не отталкивают ли ее собратья. Недокормленных докармливают, а переевшие пропускают следующую кормешку».

📅 Сроки: с 29 апреля по 11 мая включительно

Для участия отправьте свою смешную новость в гугл-форму: https://forms.gle/6YShjgfiycfJ53LX8

Ждем ваших новостей!
⚙️ Прокачиваем рефакторинг с помощью AI

Запутались в легаси, где каждый метод — это мини-роман? Попробуйте этот промпт — он поможет расчистить завалы и вдохнуть в код новую жизнь:

📝 Промпт:

Refactor the following code to improve readability, maintainability, and adherence to clean code principles. Suggest design improvements and explain the rationale behind each change.

// Вставьте закостыленный код сюда


💡 Дополнительные возможности:

— Добавьте Identify code smells if you want to spot bad practices like long methods, god objects, or excessive dependencies
— Добавьте Recommend design patterns if the codebase cries for structure
— Добавьте Suggest breaking into smaller modules or services если ощущаете, что монолит трещит по швам

💬 А как вы подходите к рефакторингу — по вдохновению или по регламенту?

🐸 Библиотека джависта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🎯 Как настроить CORS в Spring Boot

Когда фронт и бэк живут на разных доменах — CORS становится головной болью. Но Spring Boot даёт достаточно способов это настроить — от простых аннотаций до централизованной фильтрации.

1️⃣ Минимальная настройка — через @CrossOrigin

Если нужно открыть доступ только к одному контроллеру или методу:
@CrossOrigin(origins = "https://example.com")
@RestController
public class ApiController {
@GetMapping("/data")
public String getData() {
return "OK";
}
}


Удобно для быстрого прототипа, но неудобно для масштабируемого решения.

2️⃣ Глобальная настройка через WebMvcConfigurer

Если CORS нужен везде, лучше использовать конфигурационный класс:
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("https://example.com")
.allowedMethods("GET", "POST", "PUT", "DELETE")
.allowedHeaders("*")
.allowCredentials(true);
}
}


Даёт полный контроль. Можно задать разные правила для разных путей.

3️⃣ Настройка CORS через application.yml (Spring Cloud Gateway)

Если вы используете Gateway, настройка может быть ещё проще:
spring:
cloud:
gateway:
globalcors:
corsConfigurations:
'[/**]':
allowedOrigins: "https://example.com"
allowedMethods:
- GET
- POST
allowedHeaders: "*"


Подходит, если CORS должен работать до попадания запроса в конкретный микросервис.

4️⃣ CORS + безопасность

Если CORS работает «через раз», возможно, его блокирует Spring Security. Добавьте .cors() в конфигурацию:
@Configuration
@EnableWebSecurity
public class SecurityConfig {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.cors() // 👈 Без этого CORS не заработает
.and()
.authorizeHttpRequests(auth -> auth.anyRequest().permitAll());
return http.build();
}
}


5️⃣ Тестирование CORS

Проверьте через curl:
curl -H "Origin: https://example.com" \
-H "Access-Control-Request-Method: GET" \
-X OPTIONS http://localhost:8080/data -v


Ответ должен содержать заголовки:
Access-Control-Allow-Origin: https://example.com
Access-Control-Allow-Methods: GET


📌 Не оставляйте allowedOrigins("*") в проде. Это дыра в безопасности. Нужно чётко указывать домены.

💬 Как вы обычно настраиваете CORS в своих микросервисах?

🐸 Библиотека джависта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
DTO везде или строго на входе/выходе?

DTO — штука вроде очевидная: "не светить сущностями наружу". Но что дальше?

🔹 Кто-то делает DTO только в контроллерах, а внутри работает с доменными объектами.
🔹 Кто-то строит слоистую модель DTO-шек, даже между сервисами и репозиториями.
🔹 А кто-то вообще говорит: «DTO везде — меньше связность, проще миграции, лучше тестируемость».

💬 Вопрос к вам:

— Где заканчивается польза от DTO, а где начинается бессмысленная бюрократия?
— DTO только на границах приложения или вообще везде?
— Или пора забить и возвращать UserEntity напрямую в контроллер?

🐸 Библиотека джависта #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👑 Магия IntelliJ IDEA

Работаете в большом проекте и устали искать, где находится метод или переменная? IntelliJ IDEA умеет молниеносно прыгать к исходному коду — всё, что нужно, это Ctrl + B (или Cmd + B на macOS).

🔹 Зачем это нужно

— Вместо ручного поиска по файлам вы сразу попадаете в нужное место в коде.
— Работает с методами, классами, интерфейсами, переменными, импортами и даже с SQL-мэппингами в JPA.

🔹 Как использовать

— Наведите курсор на интересующий метод, переменную или класс.
— Нажмите Ctrl + B (или Cmd + B на macOS).
— IDEA мгновенно откроет определение — будь то в вашем коде, в сторонней библиотеке или в decompiled-классе.

Очень удобно, когда нужно быстро понять, что именно делает вызываемый метод, особенно если работаете с чужим кодом.

🐸 Библиотека джависта #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🎓 Как выбрать свою роль в Data Science и не потеряться в терминах

Если вы только начинаете разбираться в Data Science — перед вами лабиринт из названий: data scientist, аналитик, ML-инженер, BI, архитектор... Кто чем занимается? Что нужно учить?

➡️ Что внутри статьи

— Кто такие Data Engineer

— Чем отличается Data Architect от инженера и зачем он нужен в big data проектах

— Чем занимаются Data Analyst и почему это отличная точка входа в карьеру

— Что делает настоящий Data Scientist

В статье разобрано всё: от задач до технологий, которые реально спрашивают на собеседованиях.

📎 Ссылка

Азбука айтишника #ликбез
Please open Telegram to view this post
VIEW IN TELEGRAM
🔍 Загадка для разработчиков

Что за паттерн загадан на картинке? Пишите в комменты ответ под спойлером.

💬 Рассказывайте интересные кейсы реализации из практики

🐸 Библиотека джависта #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
🆕 Java Digest: подборка материалов

🔹 Spring-потрошитель

Автор делится опытом анализа и оптимизации Spring-приложений, выявляя скрытые зависимости и избыточные компоненты.

Рассматриваются методы обнаружения неиспользуемых бинов, циклических зависимостей и других архитектурных дефектов, влияющих на производительность и поддерживаемость кода.

🔹 Тестирование CAP-теоремы на примере MongoDB

Автор проводит серию тестов с различными параметрами writeConcern и readConcern, анализируя их влияние на согласованность и доступность данных.

Рассматриваются реальные сценарии, включая сбои и аварийные ситуации, с целью выявления оптимальных настроек для обеспечения требуемых свойств системы.

🔹 Clean your Memory: From Finalize to Cleaner

Рассматриваются проблемы, связанные с finalize(), такие как непредсказуемость вызова и возможные утечки памяти.

Введение в Cleaner предоставляет более гибкий и эффективный механизм для освобождения ресурсов, улучшая производительность и стабильность приложений.

🐸 Библиотека джависта #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM