Библиотека Java разработчика
10.8K subscribers
1.14K photos
563 videos
58 files
1.44K links
📚 Лайфхаки, приёмы и лучшие практики для Java-разработчиков. Всё, что ускорит код и прокачает навыки. Java, Spring, Maven, Hibernate.


По всем вопросам @evgenycarter

РКН clck.ru/3KoGeP
Download Telegram
Java уроки для начинающих

#1 | Установка JDK | Установка Intellij Idea | Hello World
#2 | Переменные | Ошибки компиляции
#3 | Примитивные типы данных | Тип данных char
#4 | Примитивные числовые типы данных | byte | short | int | long
#5 | Примитивные вещественные типы данных | double | float
#6 | Тип boolean | Операторы сравнения |Условный оператор if
#7 | Логические операции И, ИЛИ, НЕ

источник

👉@BookJava
👍3🫡1🗿1
Как отслеживать приложение Spring Boot с помощью Ostara

Когда приложение в продакшене, разумно следить за его состоянием. Вы хотите быть уверены, что все работает без проблем, и единственный способ узнать это - определить состояние вашего приложения. Когда что-то пойдет не так, вы, надеюсь, получите уведомление до того, как ваш клиент заметит проблему, и, возможно, сможете решить ее до того, как клиент что-то заметит. В предыдущем посте было рассказано о том, как отслеживать состояние приложения с помощью Spring Actuator, Prometheus и Grafana. В этой заметке вы рассмотрите альтернативный подход с использованием Spring Actuator в сочетании с Ostara. Настройка Ostara немного проще, и поэтому она выглядит как подходящая альтернатива. Доказательство пудинга - в его поедании, так что давайте попробуем Ostara!

https://mydeveloperplanet.com/2023/11/29/how-to-monitor-a-spring-boot-app-with-ostara/

👉@BookJava
👍5
Java уроки для начинающих. Часть 2

#8 | Оператор выбора switch
#9 | Тип данных String
#10 | Комментарии
#11 | Массивы
#12 | Арифметические операци
#13 | Инкремент и декремент
#14 | Цикл for

источник

👉@BookJava
👍4
Запуск потоков в Java

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

https://telegra.ph/Zapusk-potokov-v-Java-01-15

👉@BookJava
👍2
Что будет со ссылкой на метод, если заменить объект-владельца?

Ответ на этот вопрос будет очевиден, если вы уверенно понимаете, что скрывается за терминами ссылки вообще и ссылки на метод.

Для нестатических методов работает позднее связывание. По этой причине, когда мы обращаемся к такому методу по ссылке, то получаем метод экземпляра, а не типа переменной. На примере с изображения ниже метод класса A не будет затронут.

Факт позднего связывания в этом вопросе может ввести в заблуждение. Связывание случается в момент обращения, а не вызова. В результате в переменной хранится неизменяемая копия ссылки на метод. Она ведет на метод объекта, а не хранящей его переменной. Поэтому переприсвоение переменной позже не окажет на ссылку никакого эффекта.

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

class A {
void printMe() { System.out.printin("A"); }
}
class B extends A {
@override void printMe() { System.out -println("B"); }
}
class C extends B {
@override void printMe() { System.out printin("C"); }
}
A target = new B);
Runnable methodReference = target :printMe;
target = new C() ;
// methodReference не сохраняет связь с обновленным target
methodReference. run() ; // напечатает "В"

👉@BookJava
👍4
Spring Cloud Config и Git. Хранение и распространение конфигураций приложений

Меня зовут Дмитрий Демченко. Я Java разработчик. На проектах я активно применяю новые технологии и подходы при разработке приложений, в том числе Spring Cloud и компоненты, входящие в общую экосистему этой технологии.

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

https://habr.com/ru/articles/764402/

👉@BookJava
👍4
🚀 Spring Retry 🚀

org.springframework.retry.support.RetryTemplate

Реализуйте устойчивые операции в приложениях Spring. Определите поведение повторных попыток для надежной обработки ошибок. 🔥

https://docs.spring.io/spring-retry/docs/api/current/org/springframework/retry/support/RetryTemplate.html

👉@BookJava
👍2
Совет Spring Framework💡

Вы можете инжектировать (autowire) бины, которые могут отсутствовать, обернув их в java.util.Optional. Таким образом вы сообщаете, что этот бин является необязательным, избегаете исключения, если он не существует, и можете аккуратно обработать его отсутствие с помощью Optional API.

👉@BookJava
👍25
Совет Spring Framework💡

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

👉@BookJava
👍4
Ловушка тестирования простой оркестровки

Код оркестровки организует вызовы других компонентов (зависимостей) в определенный процесс. Такие части кода иногда называют координаторами или контроллерами. Оркестровочный код обычно прост. В нем нет (или почти нет) условной логики или алгоритмической сложности. Его основная задача - делегировать работу соответствующим зависимостям в определенном порядке. Давайте рассмотрим пример, чтобы лучше проиллюстрировать это.

class Orchestrator {
// ...

// (injected) dependencies
private final Service service; // business logic
private final Mapper mapper; // field-to-field mapping
private final Repository repository; // glue code

public ImportantObject orchestrate(ImportantDto dto) {
ImportantObject important = mapper.toImportantObject(dto);
ImportantObject processed = service.process(important);
return repository.save(processed);
}

}

https://mikemybytes.com/2024/01/17/the-trap-of-testing-simple-orchestration/

👉@BookJava
👍2
Media is too big
VIEW IN TELEGRAM
Когда ломается магия фреймворков...

Более чем за десять лет работы со Spring Framework и Enterprise Java я успел полюбить Spring Framework, возненавидеть и в итоге пересмотреть свои подходы к работе с ним. То же самое касается работы с рефлексией в целом и работы с АОП в частности.

источник

👉@BookJava
👍5
Как мы начали использовать виртуальные потоки Java 21 и на раз-два получили дедлок в TPC-C для PostgreSQL

В этом посте мы расскажем о примере дедлока в TPC-C для PostgreSQL, причиной которого является исключительно переход на виртуальные потоки Java 21 - и никаких проблем обедающих философов.

https://habr.com/ru/companies/ydb/articles/786550/

original https://blog.ydb.tech/how-we-switched-to-java-21-virtual-threads-and-got-deadlock-in-tpc-c-for-postgresql-cca2fe08d70b

👉@BookJava
👍2
🚀 Расширенные советы по Spring Boot🚀

Создание собственного FailureAnalyzer

Перехват исключений при запуске и преобразование их в человекочитаемые сообщения эффективно достигается с помощью FailureAnalyzer в Spring Boot 🔥.

https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto.application.failure-analyzer

👉@BookJava
👍5