Библиотека Java разработчика
11.3K subscribers
830 photos
388 videos
302 files
1.2K links
Библиотека Java разработчика. Java, Spring, Maven, Hibernate


По всем вопросам @evgenycarter
Download Telegram
👩‍💻 Как и зачем Java-разработчику сочетать DTO, MapStruct и Spring?

Расскажем на открытом практическом уроке от OTUS.
Спикер занятия — Senior Software Engineer.

На вебинаре мы:

- разберем паттерн DTO (Data Transfer Object);
- обсудим проблемы, которые решает паттерн и его основные сценарии использования на примере небольшого приложения на Spring Boot;
- изучим инструмент MapStruct, чтобы сделать данное сочетание удобным и сократить количество boilerplate кода.

Встречаемся 23 мая в 20:00 мск в преддверии старта курса «Разработчик на Spring Framework».
Все участники вебинара получат специальную цену на обучение и персональную консультацию от менеджеров OTUS!

➡️ Регистрация на урок: https://vk.cc/cwP72X

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
Совет по Spring Boot 💡

Начиная с Spring Boot 3.1🍃, вы можете автоматически запускать внешние сервисы (например, базы данных) в режиме dev, используя Testcontainers и новую `spring-boot:test-run`. Вот инструкция 👆

👉@BookJava
Совет по Spring Boot 💡

Аннотация с возможностью кэширования

Обеспечьте быстрый доступ к данным и уменьшите нагрузку на базу данных. 🔥

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/cache/annotation/Cacheable.html

👉@BookJava
Совет по Spring Boot 💡

Вы думаете о замене 🍃`RestTemplate` на новый Spring RestClient? Конфигурация SSL очень проста благодаря поддержке 🔐`SslBundles` через интерфейс RestClientSsl 👆

👉@BookJava
Совет по Spring Boot 💡

Если вы используете DTO в Spring Data/JPA, вы можете автоматизировать отображение между сущностями и DTO с помощью библиотеки Blaze Persistence (https://persistence.blazebit.com). Тогда вы сможете воспользоваться преимуществами, например, паттерна Spring repository.

👉@BookJava
Совет по Spring Boot 🍃💡

Если вы перешли на Java 21 и используете Spring Boot 3.1 или ниже, вам необходимо обновить билдер Paketo, чтобы избежать ошибки: «Builder lifecycle „creator“ failed with status code 51» во время `mvn spring-boot:build-image`.

👉@BookJava
AnyLogic — почему это ПО используют современные компании и зачем вам его осваивать?

Узнайте на открытом практическом уроке от OTUS, где мы разберем:

- что может AnyLogic, что не могут решатели дифференциальных уравнений, Excel и здравый смысл;
- основные возможности AnyLogic;
- основные логические блоки;
- начальную настройку любой модели;
- начальную настройку исходных чертежей.

Спикер — опытный разработчик, веб-дизайнер и преподаватель.

Встречаемся 23 мая в 20:00 мск в преддверии старта курса «Имитационное моделирование на базе AnyLogic». Все участники вебинара получат специальную цену на обучение и консультацию от менеджеров OTUS!

➡️ Регистрируйтесь прямо сейчас, чтобы не пропустить бесплатный урок: https://vk.cc/cx02fN

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
Совет по Spring Boot 🍃💡

Если вы используете Docker Compose или Testcontainers и хотите узнать ConnectionDetails, которые мы используем под капотом, просто выведите их 🤩

👉@BookJava
👩‍💻 Тест по Java от OTUS

Проверь насколько хорошо ты знаешь Java и готов освоить Spring!

Ответишь — пройдешь на продвинутый курс "Разработчик на Spring Framework" от OTUS по специальной цене.

➡️ ПРОЙТИ ТЕСТ: https://vk.cc/cx1G3c

🎫 Курс можно приобрести в рассрочку

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
🚀Совет по использованию Spring Boot API🚀

SpringApplicationBuilder

Мастер настройки приложений Spring Boot. Настройте поведение вашего приложения при запуске.

https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/builder/SpringApplicationBuilder.html

👉@BookJava
Что можно импортировать статически?

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

Самое распространенное применение статического импорта – включение констант из константных интерфейсов и статических методов из утилитарных классов. Но также можно включать и изменяемые статические поля других классов.

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

Языковая конструкция static import обязана располагаться там же, где и обычные импорты – обязательно между package и объявлением основного класса файла.

👉@BookJava
new Integer(128) == 128?

Для всех классов-оберток над примитивами кроме Float и Double работает механизм кэширования. Некоторые значения создаются на этапе инициализации класса, и переиспользуются когда объект создается не оператором new (например с помощью valueOf).

Кэшируемые значения – оба возможных Boolean, Character до '\u007f' (127) и все целые числа от -128 до 127 включительно. С Java 7 верхнюю границу для Integer можно увеличить параметром java.lang.Integer.IntegerCache.high.

Значения кэшируются и во многих других встроенных классах: BigDecimal, Currency, пустые коллекции. Детали можно узнавать из исходников и документаций, так как эти кэши реализованы не на уровне JVM а в коде классов.

В конкретно этом примере скрыт еще один подвох: объект класса-обертки сравнивается с примитивом. Это приводит к анбоксингу и сравнению значений. И ответ на вопрос – да.

👉@BookJava
Почему интерактивная разработка на Clojure — это круто?

В Clojure ты можешь запустить программу всего один раз и взаимодействовать с ней на протяжении всего процесса разработки в реальном времени. Хочешь разобраться? Тогда ждем тебя на открытом практическом уроке от OTUS, где мы разберем:

▫️как добавлять новые функции или менять состояние программы;
▫️как «прощупывать» любые данные и пошагово отлаживать код;
▫️как запускать тесты и подключаться к внешним системам.

И всё это не выходя из интерактивной среды разработки REPL!

Встречаемся 30 мая в 20:00 мск в рамках курса «Clojure Developer». Все участники вебинара получат специальную цену на обучение!

➡️ Регистрируйся прямо сейчас, чтобы не пропустить бесплатный урок: https://vk.cc/cx3CGN

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
Как инициализировать переменную функционального интерфейса?

Функциональный интерфейс – всё ещё интерфейс, поэтому остаются доступными стандартные способы. Интерфейс можно реализовать обычным классом, и затем создать его экземпляр оператором new. Можно совместить эти два действия, и создать экземпляр анонимного класса.

Основное преимущество, которое дает функциональный интерфейс – два дополнительных способа инициализации параметров и переменных.

1. Лямбда-выражение: (x, y) -> x * y
2. Ссылка на метод: Math::sqrt

На эти способы накладывается небольшое ограничение: тип функционального параметра/переменной должен быть указан явно. Это значит, что лямбдой или метод-референсом нельзя инициализировать переменную, объявленную ключевым словом var. Также, чтобы передать лямбду или референс в параметр generic-типа, этот тип должен быть ограничен функциональным интерфейсом (должен стираться в него).

👉@BookJava
Совет по Java 💡☕️

Чтобы получить все дни месяца, вы можете начать с объекта YearMonth, получить его первый день, а затем использовать функцию datesUntil(), которая возвращает Stream всех дней до указанной даты.

👉@BookJava
👩‍💻 Хотите стать Java-разработчиком, но думайте, что изучение основ программирования — это скучно?

Только не в нашем формате!
Ждём вас на открытом практическом уроке от OTUS, где мы:

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

📌После вебинара вы сможете самостоятельно написать похожее приложение и даже улучшить его!

Спикер Александр Фисунов — Senior Kotlin Developer в SSP Software на проекте ВТБ, опытный ментор, кандидат технических наук.

Встречаемся 29 мая в 20:00 мск в рамках курса «Специализация Java-разработчик».
Все участники вебинара получат специальную цену на обучение!

➡️ Регистрируйтесь прямо сейчас, чтобы не пропустить бесплатный урок: https://vk.cc/cx3JsJ

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
🚀 Spring Boot с DevTools для Live Reload🚀

Ускорьте разработку с помощью DevTools! 🔥

https://docs.spring.io/spring-boot/reference/using/devtools.html

👉@BookJava
Внутри JVM: Массивы и их отличие от других объектов

Массивы являются уникальными объектами в JVM, и понимание их структуры позволяет лучше писать код.
Самый простой способ классификации элементов данных Java - это разделение их на примитивы и объекты. К примитивам, как известно большинству разработчиков Java, относятся булевы числа, байты, символы, варианты целых чисел (short, int и long), а также варианты чисел с плавающей точкой (floats и doubles). Внутри JVM эти примитивы инстанцируются в "сыром" виде. Объявление int создает для JVM 32-разрядное знаковое целое поле, с которым она может работать. Чаще всего эти примитивы создаются в стеке операндов, который строится при каждом вызове метода. (Заметным исключением являются статические примитивы, которые создаются в куче).

https://blogs.oracle.com/javamagazine/post/java-array-objects

👉@BookJava
👩‍💻 Пройди тест по Java и проверь свои знания.

Ответишь
— пройдешь на продвинутый курс "Java Developer. Professional" от OTUS по специальной цене + получишь доступ к записям открытых уроков курса курса

👉 ПРОЙТИ ТЕСТ: https://vk.cc/cx5tGb

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM