Visitor — это поведенческий паттерн, который позволяет добавлять новые операции к объектам без изменения их классов. Он выделяет операции в отдельный объект, называемый "посетитель", что позволяет избежать дублирования кода и поддерживать open/closed архитектуру.
Использование:
🔹 Когда нужно добавлять новые операции к иерархии классов без изменения их структуры.
🔹 Когда объектам требуется обработка, зависящая от их типов, но нежелательно добавлять логику внутрь самих классов.
Преимущества:
Недостатки:
Please open Telegram to view this post
VIEW IN TELEGRAM
🐍☕️ Тайные питонисты среди нас?
Не секрет, что среди Java-разработчиков скрываются те, кто втайне любит Python. Кто украдкой пишет скрипты на Python для автоматизации или просто мечтает о жизни без фигурных скобок.
📌 Пройдите тест и проверьте, не живет ли внутри вас тайный питонист.
P.S. Не волнуйтесь, никто не будет осуждать, если вам вдруг понравится 🙂
Не секрет, что среди Java-разработчиков скрываются те, кто втайне любит Python. Кто украдкой пишет скрипты на Python для автоматизации или просто мечтает о жизни без фигурных скобок.
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Java jobs — вакансии для java-разработчиков
#дайджест #Javadevjob
Вакансии Java разработчиков уровня Junior
▪️ Junior Java разработчик (Стажер)
Офис (Санкт-Петербург), Центр финансовых технологий
Подробнее
▪️ Junior Java Developer (Пенза)
Офис (Пенза), Тортуга
Подробнее
Вакансии Java разработчиков уровня Middle
▪️ Java-разработчик
Офис (Москва, Санкт-Петербург, Екатеринбург) / Удалёнка, Т-Банк
Подробнее
▪️ Middle+ Java разработчик
Гибрид (Москва), СберКорус
Подробнее
Вакансии Java разработчиков уровня Senior
▪️ Java-разработчик Middle\Senior
Удалёнка, RedLab
Подробнее
▪️ Senior Java разработчик
Удалёнка / Офис (Москва), Синхро
Подробнее
Понравились вакансии?
❤️ — да
🤔 — нет
Вакансии Java разработчиков уровня Junior
▪️ Junior Java разработчик (Стажер)
Офис (Санкт-Петербург), Центр финансовых технологий
Подробнее
▪️ Junior Java Developer (Пенза)
Офис (Пенза), Тортуга
Подробнее
Вакансии Java разработчиков уровня Middle
▪️ Java-разработчик
Офис (Москва, Санкт-Петербург, Екатеринбург) / Удалёнка, Т-Банк
Подробнее
▪️ Middle+ Java разработчик
Гибрид (Москва), СберКорус
Подробнее
Вакансии Java разработчиков уровня Senior
▪️ Java-разработчик Middle\Senior
Удалёнка, RedLab
Подробнее
▪️ Senior Java разработчик
Удалёнка / Офис (Москва), Синхро
Подробнее
Понравились вакансии?
❤️ — да
🤔 — нет
spb.hh.ru
Вакансия Junior Java разработчик (Стажер) в Санкт-Петербурге, работа в компании Центр финансовых технологий (вакансия в архиве…
Зарплата: не указана. Санкт-Петербург. Требуемый опыт: не требуется. Полная. Дата публикации: 07.02.2025.
🐛🔍 Как найти баг в 2088 коммитах с помощью git bisect
Метод
Задача: найти конкретный коммит, который вызвал регрессионную ошибку в проекте.
Исходные данные:
✔️ Ошибка была зарегистрирована 21 октября. Она находится в текущей версии на ветке main.
✔️ Ошибка отсутствует в более ранней версии, которая была выделена в отдельную ветку
✔️ Ветку
🔗 Читать статью
🔗 Зеркало
Метод
git bisect
— мощный инструмент для поиска изменения, вызвавшего баг в коде: с его помощью разработчику удалось быстро локализовать проблему, просмотрев всего 11 коммитов вместо изначальных 2088.Задача: найти конкретный коммит, который вызвал регрессионную ошибку в проекте.
Исходные данные:
✔️ Ошибка была зарегистрирована 21 октября. Она находится в текущей версии на ветке main.
✔️ Ошибка отсутствует в более ранней версии, которая была выделена в отдельную ветку
release-5.7.0
.✔️ Ветку
release-5.7.0
создали 2 месяца назад, а с тех пор в ветке main
было сделано много изменений — баг может находиться в любом из нескольких тысяч коммитов, которые невозможно быстро просмотреть.🔗 Читать статью
🔗 Зеркало
Связывание (binding) определяет, какой метод будет вызван во время выполнения программы. Понимание различий между динамическим и статическим связыванием важно для эффективного использования полиморфизма и оптимизации производительности приложения.
Статическое связывание происходит на этапе компиляции. Компилятор определяет, какой метод или переменная будут использоваться, основываясь на типе ссылки.
▪️ Когда используется?
- Статические методы (static)
- Частные методы (private)
- Методы в финальных классах (final)
- Перегруженные методы (method overloading)
▪️ Пример:
class A {
static void display() { System.out.println("Static A"); }
}
class B extends A {
static void display() { System.out.println("Static B"); }
}
public class Main {
public static void main(String[] args) {
A obj = new B();
obj.display(); // Выведет: Static A
}
}
display() — статический метод. Вызов определяется типом ссылки A, поэтому вызывается A.display().
Динамическое связывание происходит во время выполнения (runtime). JVM определяет, какой метод вызвать, основываясь на фактическом типе объекта.
▪️ Когда используется?
- Переопределенные методы (method overriding)
- Нестатические методы (instance methods)
▪️ Пример:
class A {
void display() { System.out.println("Dynamic A"); }
}
class B extends A {
@Override
void display() { System.out.println("Dynamic B"); }
}
public class Main {
public static void main(String[] args) {
A obj = new B();
obj.display(); // Выведет: Dynamic B
}
}
display() — нестатический метод. Вызов определяется фактическим типом объекта B, поэтому вызывается B.display().
▪️ Статическое связывание:
- Утилитные классы: Методы Math.max(), Collections.sort() и другие статические методы часто используют статическое связывание для быстрого доступа.
- Безопасность: Приватные методы не могут быть переопределены, что предотвращает изменение внутренней логики класса.
▪️ Динамическое связывание:
- Полиморфизм: Позволяет создавать гибкие и расширяемые системы. Например, использование интерфейсов и абстрактных классов для определения контрактов.
- Фреймворки и библиотеки: Многие фреймворки (например, Spring) используют динамическое связывание для внедрения зависимостей и аспектно-ориентированного программирования (AOP).
Please open Telegram to view this post
VIEW IN TELEGRAM
❤️ Отлично, Java стала мощнее и лаконичнее.
🤔 Использую только там, где это действительно оправдано.
🌚 Функциональщина не для меня, только классическое ООП.
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Библиотека девопса | DevOps, SRE, Sysadmin
🚀 ТОП-10 перспективных российских стартапов в 2025 году
Мир технологий развивается стремительно, и стартапы играют ключевую роль в этом процессе. Каждый год появляются компании, которые меняют привычные подходы и предлагают решения, способные кардинально повлиять на индустрию.
Что ждёт нас в 2025 году?
Какие российские стартапы уже сейчас выходят на новый уровень и обещают удивить инновациями?
В этом материале мы собрали 10 самых перспективных проектов, за которыми сто́ит следить, чтобы быть на острие технологических и бизнес-трендов. Узнайте, кто может стать новым лидером рынка и как эти компании уже сегодня меняют правила игры.
📎 Читать
Мир технологий развивается стремительно, и стартапы играют ключевую роль в этом процессе. Каждый год появляются компании, которые меняют привычные подходы и предлагают решения, способные кардинально повлиять на индустрию.
Что ждёт нас в 2025 году?
Какие российские стартапы уже сейчас выходят на новый уровень и обещают удивить инновациями?
В этом материале мы собрали 10 самых перспективных проектов, за которыми сто́ит следить, чтобы быть на острие технологических и бизнес-трендов. Узнайте, кто может стать новым лидером рынка и как эти компании уже сегодня меняют правила игры.
📎 Читать
Подготовься к собеседованию на позицию Data Scientist!
Профессия Data Scientist становится все более востребованной, и компании ищут специалистов, способных превращать данные в ценные инсайты. Но как успешно пройти техническое собеседование?
Мы собрали 10 типичных задач, которые могут встретиться на собеседовании, и эффективные подходы к их решению:
1. Внешнее и тензорное произведение
2. One-hot кодировка
3. Мониторинг осадков
4. Симуляция бросков кубиков в «Монополии»
5. Бурение скважин для добычи золота
6. Вычисление свертки
7. Бэктестинг торговой стратегии
8. Прогноз оттока клиентов с помощью логистической регрессии
9. Обнаружение спама с использованием дерева решений
10. Предсказание цен на квартиры с помощью линейной регрессии
Чтобы начать решать задачи, достаточно ответить на четыре простых вопроса по этой ссылке и получить доступ к вводным занятиям курса Математика для Data Science и 10 задачам.
Профессия Data Scientist становится все более востребованной, и компании ищут специалистов, способных превращать данные в ценные инсайты. Но как успешно пройти техническое собеседование?
Мы собрали 10 типичных задач, которые могут встретиться на собеседовании, и эффективные подходы к их решению:
1. Внешнее и тензорное произведение
2. One-hot кодировка
3. Мониторинг осадков
4. Симуляция бросков кубиков в «Монополии»
5. Бурение скважин для добычи золота
6. Вычисление свертки
7. Бэктестинг торговой стратегии
8. Прогноз оттока клиентов с помощью логистической регрессии
9. Обнаружение спама с использованием дерева решений
10. Предсказание цен на квартиры с помощью линейной регрессии
Чтобы начать решать задачи, достаточно ответить на четыре простых вопроса по этой ссылке и получить доступ к вводным занятиям курса Математика для Data Science и 10 задачам.
💾 CDC vs Outbox: как решить проблему двойной записи в распределенной системе
В распределённых системах согласованность данных часто становится настоящим вызовом. Особенно это касается сценариев, где требуется выполнить несколько операций в разных системах одновременно.
Как избежать проблем двойной записи? Современные подходы, такие как захват изменений данных (CDC) и паттерн Outbox, предлагают интересные решения. Эти методики позволяют поддерживать целостность данных, избегать сбоев и минимизировать риски.
Хотите узнать, как внедрить такие подходы и выбрать оптимальный для своей системы? Загляните в захватывающее руководство, чтобы разобраться в тонкостях.
🔗 Читать статью
🔗 Зеркало
В распределённых системах согласованность данных часто становится настоящим вызовом. Особенно это касается сценариев, где требуется выполнить несколько операций в разных системах одновременно.
Как избежать проблем двойной записи? Современные подходы, такие как захват изменений данных (CDC) и паттерн Outbox, предлагают интересные решения. Эти методики позволяют поддерживать целостность данных, избегать сбоев и минимизировать риски.
Хотите узнать, как внедрить такие подходы и выбрать оптимальный для своей системы? Загляните в захватывающее руководство, чтобы разобраться в тонкостях.
🔗 Читать статью
🔗 Зеркало
Самые полезные каналы для программистов в одной подборке!
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
Азбука айтишника — здесь мы познаем азы из мира программирования
🤖Про нейросети
Библиотека робототехники и беспилотников | Роботы, ИИ, интернет вещей
Библиотека нейрозвука | Транскрибация, синтез речи, ИИ-музыка
Библиотека нейротекста | ChatGPT, Gemini, Bing
Библиотека нейровидео | Sora AI, Runway ML, дипфейки
Библиотека нейрокартинок | Midjourney, DALL-E, Stable Diffusion
#️⃣C#
Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel
☁️DevOps
Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
🐘PHP
Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты
🐍Python
Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты
☕Java
Книги для джавистов | Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков
👾Data Science
Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту
🦫Go
Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go
🧠C++
Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++
💻Другие каналы
Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
Библиотека разработчика игр | Gamedev, Unity, Unreal Engine
📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈
Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT
Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *
* Организация Meta запрещена на территории РФ
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
Азбука айтишника — здесь мы познаем азы из мира программирования
🤖Про нейросети
Библиотека робототехники и беспилотников | Роботы, ИИ, интернет вещей
Библиотека нейрозвука | Транскрибация, синтез речи, ИИ-музыка
Библиотека нейротекста | ChatGPT, Gemini, Bing
Библиотека нейровидео | Sora AI, Runway ML, дипфейки
Библиотека нейрокартинок | Midjourney, DALL-E, Stable Diffusion
#️⃣C#
Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel
☁️DevOps
Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
🐘PHP
Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты
🐍Python
Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты
☕Java
Книги для джавистов | Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков
👾Data Science
Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту
🦫Go
Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go
🧠C++
Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++
💻Другие каналы
Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
Библиотека разработчика игр | Gamedev, Unity, Unreal Engine
📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈
Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT
Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *
* Организация Meta запрещена на территории РФ
Forwarded from Библиотека собеса по Java | вопросы с собеседований
LinkedHashSet — это коллекция, обеспечивающая хранение уникальных элементов с сохранением порядка их вставки. LinkedHashSet, как и HashSet, работает с элементами за амортизированное O(1) время, но, в отличие от HashSet, сохраняет порядок добавления элементов благодаря дополнительной структуре связного списка.
🔹 Структура LinkedHashSet
LinkedHashSet базируется на HashMap, но имеет уникальную особенность — упорядочивание элементов за счёт использования связного списка поверх стандартной хеш-таблицы.
▪️ Хранение данных: LinkedHashSet использует LinkedHashMap для хранения элементов. Каждый добавляемый элемент выступает в роли ключа, а значение всегда фиксировано (обычно это объект-заглушка).
▪️ Связный список: Для поддержания порядка добавления, элементы связаны друг с другом в виде двусвязного списка. Это позволяет итерациям проходить элементы в порядке их вставки.
▪️ Уникальность элементов: Как и в HashSet, каждый элемент уникален. При попытке добавить дублирующий элемент он игнорируется, сохраняя уникальность всех значений.
🔹 Производительность
▪️ Добавление: Добавление элементов происходит за амортизированное O(1) время. LinkedHashSet вычисляет хэш элемента и индекс, где он будет храниться в массиве бакетов LinkedHashMap.
▪️ Удаление: Удаление происходит также за амортизированное O(1) время. LinkedHashSet находит элемент по хэшу, удаляет его из связного списка и освобождает место в корзине.
▪️ Поиск: Поиск происходит за амортизированное O(1) время благодаря хэш-таблице.
🔹 Использование памяти
LinkedHashSet требует немного больше памяти по сравнению с HashSet, так как хранит не только хэш-таблицу, но и двусвязный список, поддерживающий порядок добавления элементов. Это делает LinkedHashSet более затратным в плане памяти, особенно при большом количестве элементов.
🔹 Преимущества и недостатки
▪️ Преимущества:
- Сохранение порядка добавления элементов.
- Быстрая работа с элементами за амортизированное O(1) время, как и в HashSet.
▪️ Недостатки:
- Потребление ресурсов возрастает при большом количестве элементов, так как структура требует больше памяти для поддержания порядка.
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡️ — раз в год
🔥 — раз в 2-3 года
❤️ — раз в 5-6 лет
🌚 — работу можно менять?
Please open Telegram to view this post
VIEW IN TELEGRAM
Мы запустили свежий канал, где делимся идеями для дизайна интерфейсов. Всё самое стильное, оригинальное и вдохновляющее теперь в одном месте.
📌 Чем полезен канал?
→ Идеи для дизайна интерфейсов.
→ Анимации, которые можно повторить или адаптировать.
→ Лёгкий способ искать вдохновение перед новым проектом.
👉 Подписывайтесь и вдохновляйтесь: UX in GIF
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Библиотека девопса | DevOps, SRE, Sysadmin
👔❌ Слишком молодой, слишком опытный: 9 причин, почему вам могут отказать после собеседования
Собеседование прошло гладко: вы подготовились, уверенно ответили на все вопросы, проявили заинтересованность и даже получили положительный фидбек. Но вместо долгожданного оффера — отказ. Почему так произошло? На самом деле, отказ может быть вызван множеством причин: от излишнего опыта до неудачной коммуникации с рекрутером.
В этой статье разобрали 9 наиболее распространённых причин, по которым кандидаты не получают работу после интервью. Это не всегда связано с вашими навыками — иногда проблема в ожиданиях компании или внутренних процессах. Узнайте, как избежать подобных ситуаций и повысить свои шансы на успех!
📎 Разобраться в причинах
Собеседование прошло гладко: вы подготовились, уверенно ответили на все вопросы, проявили заинтересованность и даже получили положительный фидбек. Но вместо долгожданного оффера — отказ. Почему так произошло? На самом деле, отказ может быть вызван множеством причин: от излишнего опыта до неудачной коммуникации с рекрутером.
В этой статье разобрали 9 наиболее распространённых причин, по которым кандидаты не получают работу после интервью. Это не всегда связано с вашими навыками — иногда проблема в ожиданиях компании или внутренних процессах. Узнайте, как избежать подобных ситуаций и повысить свои шансы на успех!
Please open Telegram to view this post
VIEW IN TELEGRAM
JetBrains выпустили новую версию IntelliJ IDEA 2024.3, и она порадовала рядом полезных фич. Вот самые интересные моменты релиза:
Теперь окно со структурой проекта показывает не только физическое расположение файлов, но и логическую структуру. Например, если вы работаете с контроллером в Spring, то прямо в этом окне можно увидеть список эндпоинтов и их привязку.
Новый AI-помощник теперь обладает улучшенной контекстной осведомленностью и может помогать при работе с VCS и отладкой кода. Это ускоряет процесс написания и анализа кода благодаря интеллектуальным подсказкам и оптимизациям.
Отладка стала еще мощнее: улучшенная функция HotSwap позволяет быстрее обновлять код во время отладки.
Улучшена поддержка новых возможностей Kotlin, а также дебаггинг нативных изображений GraalVM, что упрощает работу с мультиплатформенными приложениями.
Это лишь краткий обзор интересных новинок. Ознакомиться со всеми подробностями релиза можно в официальном блоге JetBrains.
Please open Telegram to view this post
VIEW IN TELEGRAM
BeanPostProcessor — это интерфейс из Spring Framework, который позволяет вмешиваться в процесс создания и инициализации бинов в Spring контейнере. Он предоставляет два основных метода, которые вызываются на разных этапах жизненного цикла бина:
▪️ postProcessBeforeInitialization(Object bean, String beanName) - вызывается до того, как бин будет инициализирован (до вызова метода @PostConstruct или InitializingBean#afterPropertiesSet).
▪️ postProcessAfterInitialization(Object bean, String beanName) - вызывается после инициализации бина (после завершения всех инициализационных методов).
Зачем нужен BeanPostProcessor?
Он используется для дополнительной обработки и кастомизации бинов после их создания, но до передачи клиентскому коду. Примеры:
- Добавление проксирования бинов (например, для AOP или транзакций).
- Валидация или изменение свойств бинов.
- Логирование жизненного цикла.
- Добавление кастомных аннотаций.
- Обработка маркерных интерфейсов.
Как это работает?
@Component
public class CustomBeanPostProcessor implements BeanPostProcessor {
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) {
System.out.println("Before Initialization: " + beanName);
return bean;
}
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) {
System.out.println("After Initialization: " + beanName);
return bean;
}
}
Результат: Вывод сообщений о каждом бине до и после инициализации.
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Java jobs — вакансии для java-разработчиков
#дайджест #Javadevjob
Вакансии Java разработчиков уровня Junior
▪️ Java developer
Гибрид (Москва, Санкт-Петербург, Екатеринбург), beeline
Подробнее
▪️ Junior Java-разработчик
Офис (Москва), Gridnine
Подробнее
Вакансии Java разработчиков уровня Middle
▪️ Java разработчик
Удалёнка, Comitas
Подробнее
▪️ Middle Java разработчик
Гибрид (Москва, Краснодар, Санкт-Петербург, Иннополис) / Удалёнка (РФ), Магнит
Подробнее
Вакансии Java разработчиков уровня Senior
▪️ Senior Java developer
Офис (Москва, Липецк), НЛМК ИТ
Подробнее
▪️ Senior Java разработчик
Удалёнка, МегаФон
Подробнее
Понравились вакансии?
❤️ — да
🤔 — нет
Вакансии Java разработчиков уровня Junior
▪️ Java developer
Гибрид (Москва, Санкт-Петербург, Екатеринбург), beeline
Подробнее
▪️ Junior Java-разработчик
Офис (Москва), Gridnine
Подробнее
Вакансии Java разработчиков уровня Middle
▪️ Java разработчик
Удалёнка, Comitas
Подробнее
▪️ Middle Java разработчик
Гибрид (Москва, Краснодар, Санкт-Петербург, Иннополис) / Удалёнка (РФ), Магнит
Подробнее
Вакансии Java разработчиков уровня Senior
▪️ Senior Java developer
Офис (Москва, Липецк), НЛМК ИТ
Подробнее
▪️ Senior Java разработчик
Удалёнка, МегаФон
Подробнее
Понравились вакансии?
❤️ — да
🤔 — нет
Habr
Вакансия «Java developer» в городах Москва, Санкт-Петербург и Екатеринбург, работа в компании «beeline» — Хабр Карьера
Вакансия «Java developer» в городах Москва, Санкт-Петербург и Екатеринбург, работа в компании «beeline». Полная занятость. Можно удаленно. Вакансия в архиве.