Telegram Web Link
🖥 Магия Spring Framework своими руками

Мотивация
Spring Framework позволяет сфокусироваться на бизнес-логике, а вся настройка инфраструктуры выполняется силами самого фреймворка. Так, например, разработчик вешает аннотацию @RestController на бин, и бин начинает обрабатывать REST запросы, при этом разработчик не трогает Servlet Context, не настраивает цепочку фильтров или веб сервер: все конфигурируется автоматически. Автоматическая настройка инфраструктуры выполняется благодаря постобработке бинов. Зачастую для реализации дополнительной функциональности применяется Spring AOP - аспектно-ориентированное программирование.

Spring AOP удобен, когда необходимо выполнить код перед, после или вместо вызова метода бина. Управление транзакциями - классический пример использования Spring AOP: начать транзакцию перед вызовом метода и зафиксировать ее после завершения метода.

Spring AOP бин, который накручивает дополнительную функциональность другим Spring бинам, помечается аннотацией @Aspect, но как потом этот бин используется для добавления дополнительной функциональности в поток исполнения? Все работает благодаря тому, что в жизненный цикл бина можно вклиниться при помощи BeanPostProcessor.

📌Читать полностью
📌Код

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Шаблон проектирования объектный пул на Java

Объектный пул (англ. object pool) — порождающий шаблон проектирования, набор инициализированных и готовых к использованию объектов. Когда системе требуется объект, он не создаётся, а берётся из пула. Когда объект больше не нужен, он не уничтожается, а возвращается в пул.

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

1. Соединения с базами данных: Управление пулом соединений с базами данных позволяет повысить производительность приложений, взаимодействующих с базами данных.

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

3. Сетевые соединения: В сетевом программировании управление пулом сетевых соединений может привести к более эффективному использованию ресурсов.

Теперь рассмотрим пример использования паттерна в Java для создания простого пула объектов Connection.

В этом примере (смотри картинку) мы создали простой класс `ConnectionPool` для управления пулом соединений с базой данных. При создании объекта `ConnectionPool` пул инициализируется с заданным количеством соединений. Клиенты могут запрашивать соединения из пула с помощью метода `getConnection()` и освобождать их обратно в пул с помощью метода releaseConnection(), когда они закончили их использовать.

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Лучшие практики написания кода в Spring Boot

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

Применяйте надлежащий стиль упаковки

Надлежащая упаковка помогает легко понять код и поток приложения. Это позволяет успешно структурировать приложение.

Вы сможете распределить по отдельным пакетам все контроллеры, сервисы, утилитарные классы и т. д. Такой стиль очень удобен в небольших микросервисах.

При работе с огромной кодовой базой полезно использовать функционально-ориентированный подход. Вы можете принять решение в зависимости от требований проекта — на основе типов или на основе функций.
*Пример в изображении.

Используйте паттерны проектирования

Паттерны проектирования — безупречная практика. С проверенными шаблонами у вас не будет поводов для недовольства. Но вам необходимо определить место использования шаблонов.

👇
ЧИТАТЬ

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Шпаргалка по структурам данных в Java

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

Что такое структуры данных, для чего они и какие есть в Java?


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

В Java есть следующие структуры данных:

Массив
Список (Динамический массив)
Стек
Очередь
Связный список
HashTable и HashMap
Дерево

📌 Читать полностью

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Руководство по созданию мультиплатформенного проекта Kotlin с помощью Kobweb

Kobweb — это фреймворк Kotlin для создания сайтов и веб-приложений, построенный поверх Compose HTML, а также немного Next.js и Chakra UI.

✔️Смотреть

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡️Маст-хэв список для программистов, каналы с последними книжными новинками, библиотеками, разбором кода и актуальной информацией, связанной с вашим языком программирования.
Лучший способ получать свежие обновлении и следить за трендами в разработке.

Машинное обучение: www.tg-me.com/ai_machinelearning_big_data
Python: www.tg-me.com/pythonl
C#: www.tg-me.com/csharp_ci
C/C++/ www.tg-me.com/cpluspluc
Data Science: www.tg-me.com/data_analysis_ml
Devops: www.tg-me.com/devOPSitsec
Go: www.tg-me.com/Golang_google
Базы данных: www.tg-me.com/sqlhub
Rust: www.tg-me.com/rust_code
Javascript: www.tg-me.com/javascriptv
React: www.tg-me.com/react_tg
PHP: www.tg-me.com/phpshka
Android: www.tg-me.com/android_its
Мобильная разработка: www.tg-me.com/mobdevelop
Linux: www.tg-me.com/+A8jY79rcyKJlYWY6
Big Data: www.tg-me.com/bigdatai
Хакинг: www.tg-me.com/linuxkalii
Тестирование: https://www.tg-me.com/+F9jPLmMFqq1kNTMy
Java: www.tg-me.com/javatg

💼 Папка с вакансиями: www.tg-me.com/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: www.tg-me.com/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: www.tg-me.com/addlist/eEPya-HF6mkxMGIy

Папка машинное обучение: https://www.tg-me.com/addlist/_FjtIq8qMhU0NTYy

📕 Бесплатные Книги для программистов: https://www.tg-me.com/addlist/YZ0EI8Ya4OJjYzEy

🎞 YouTube канал: https://www.youtube.com/@uproger

😆ИТ-Мемы: www.tg-me.com/memes_prog

🇬🇧Английский: www.tg-me.com/english_forprogrammers
Please open Telegram to view this post
VIEW IN TELEGRAM
Что выведет код ?

class Test
{
boolean[] array = new boolean[3];
int count = 0;

void set(boolean[] arr, int x)
{
arr[x] = true;
count++;
}

void func()
{
if(array[0] && array[++count - 2] | array [count - 1])
count++;

System.out.println("count = " + count);
}


public static void main(String[] args)
{
Test object = new Test();
object.set(object.array, 0);
object.set(object.array, 1);
object.func();
}
}


Пишите свое решение в комментариях👇

@javatg
Как Spring Framework реализует паттерн Dependency Injection?

Инверсия контроля (inversion of control, IoC) – принцип проектирования, по которому контроль над потоком управления передается фреймворку. Управляющий и прикладной код разделяются. При разработке модуля этот подход избавляет от необходимости знать о других модулях программы и деталях их взаимодействия. Такой код становится более переипользуемым и модульным, уменьшает связность.

Внедрение зависимостей (Dependency Injection, DI) – одна из реализаций IoC. При взаимодействии с другими модулями, программа оперирует высокоуровневыми абстракциями, тогда как конкретная её реализация поставляется фреймворком.

Стандартная реализация DI – фреймворк инстанциирует все сервисы, и складывает их в IoC-контейнер. При этом специальная сущность, Service Locator, занимается поиском соответствия реализаций абстракциям и их внедрением.

Spring – большой набор различных библиотек. DI реализуется одной из основных библиотек – Spring IoC.

Сущности бизнес-логики в Spring, как и в JavaEE называются beans. Бины объявляются различными способами, корни большинства из них лежат в понятии Configuration. В качестве контейнера бинов выступает ApplicationContext. Чтобы передать инициализацию зависимости контексту, она помечается аннотацией
@Autowired.

@javatg
🖥Spring Security в деталях

Аутентификация - Spring Security в деталях
Получение информации о пользователе - Spring Security в деталях
Ещё один способ получения аутентифицированного пользователя #java #springsecurity
Точки входа аутентификации - Spring Security в деталях
Источники информации о пользователях - Spring Security в деталях
Устаревшие DSL в Spring Security 6.1
Отладка контекста безопасности - Spring Security в деталях
DSL и конфигураторы контекста безопасности - Spring Security в деталях
Фильтры безопасности - Spring Security в деталях

📌 источник

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
2024/10/03 04:30:11
Back to Top
HTML Embed Code: