Java Portal | Программирование
12.7K subscribers
1.26K photos
105 videos
38 files
1.23K links
Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика

Связь: @devmangx

РКН: https://clck.ru/3H4WUg
Download Telegram
Что такое BeanPostProcessor в Java Spring Boot?

Это интерфейс, который позволяет вмешиваться в процесс создания и инициализации бинов в Spring-контейнере.

Он предоставляет два основных метода, которые вызываются на разных этапах жизненного цикла бина:

1. postProcessBeforeInitialization(Object bean, String beanName)
Вызывается до инициализации бина (до вызова метода с @PostConstruct или InitializingBean#afterPropertiesSet).

2. postProcessAfterInitialization(Object bean, String beanName)
Вызывается после инициализации бина (после того, как все методы инициализации завершились).

Зачем нужен BeanPostProcessor?

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

Примеры:

- Добавление проксирования бинов (например, для AOP или транзакций)
- Валидация или изменение свойств бина
- Логирование жизненного цикла
- Добавление кастомных аннотаций
- Обработка marker-интерфейсов

Как это работает?

1. Spring сканирует контекст на наличие бинов, которые реализуют интерфейс BeanPostProcessor.
2. Если такие бины найдены, они применяются ко всем бинам в приложении.
3. Методы postProcessBeforeInitialization и postProcessAfterInitialization вызываются для каждого бина, который создаёт Spring.

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
6
Java-совет: начиная с Java 9 можно использовать Stream.takeWhile() для удобной "нарезки" списков через стримы.

List<Integer> numbers = List.of(1, 2, 3, 4, 5, 6, 7, 8, 9);

✗ Вместо:

List<Integer> result = new ArrayList<>();

for (Integer n : numbers) {
if (n < 5) {
result.add(n);
} else {
break;
}
}
System.out.println(result); // [1, 2, 3, 4]

✓ Можно так:

result = numbers.stream().takeWhile(n -> n < 5).toList();
System.out.println(result); // [1, 2, 3, 4]


👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21
9 000₽ за вечер. Без кода. Без офиса. Без опыта.

Именно столько платят за одного чат-бота для бизнеса начинающим спецам.

Берёшь шаблон → собираешь бота → сдаёшь клиенту. Первые деньги — в первую же неделю.

Показываю, как новичку делать чат-ботов для бизнеса за дорого:
👉 @other_digital_bot
2😁2
Я побывал по обе стороны собеседований по system design.

Ниже темы, которые нужно изучить, чтобы действительно хорошо в этом разбираться:

1. [Сервер]

2. [Задержка и пропускная способность]

3. [Масштабирование и его виды]
– Вертикальное и горизонтальное масштабирование

4. [Автомасштабирование]

5. [Прикидочные расчеты]

6. [Теорема CAP]

7. [Масштабирование базы данных]
– Индексы
– Партиционирование
– Архитектура master-slave
– Multi-master
– Шардирование базы данных
– Недостатки шардирования

8. [SQL и NoSQL базы данных и когда что использовать]

9. [База данных]
– SQL-база данных
– NoSQL-база данных
– Масштабирование в NoSQL и SQL
– Когда какую базу использовать?

10. [Микросервисы]
– Монолит vs микросервисы
– Зачем вообще разбивать приложение на микросервисы?
– Когда использовать микросервисы?
– Как клиенты делают запросы в микросервисной архитектуре?

11. [Глубокое погружение в load balancer]
– Зачем нужен load balancer?
– Алгоритмы load balancing

12. [Кеширование]
– Плюсы кеширования
– Типы кешей
– Redis

13. [Blob Storage]
– Что такое blob и зачем нужно blob storage?
– AWS S3

14. [CDN, Content Delivery Network]
– Как работает CDN?

15. [Message Broker]
– Асинхронное программирование
– Зачем ставить message broker между сервисами?
– Очередь сообщений
– Поток сообщений
– Когда использовать message broker

16. [Глубокое погружение в Apache Kafka]
– Когда использовать Kafka
– Внутреннее устройство Kafka

17. [Pub/sub в реальном времени]

18. [Event-Driven Architecture]
– Зачем использовать EDA?
– Простое уведомление о событии
– Передача состояния через событие

19. [Распределенные системы]

20. [Самовосстанавливающаяся система с election лидера]

21. [Глубокое погружение в consistency]
– Строгая согласованность
– Когда выбирать strong consistency
– Eventual consistency
– Когда выбирать eventual consistency
– Способы добиться strong consistency
– Способы добиться eventual consistency

22. [Consistent hashing]

23. [Избыточность данных и восстановление данных]
– Зачем делать базы данных избыточными?
– Разные способы резервного копирования
– Непрерывная избыточность

24. [Прокси]
– Forward proxy vs reverse proxy

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
3