Java Portal | Программирование
Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика Связь: @devmangx РКН: https://clck.ru/3H4WUg
Show more📈 Analytical overview of Telegram channel Java Portal | Программирование
Channel Java Portal | Программирование (@java_iibrary) in the Russian language segment is an active participant. Currently, the community unites 12 109 subscribers, ranking 10 407 in the Technologies & Applications category and 54 513 in the Russia region.
📊 Audience metrics and dynamics
Since its creation on невідомо, the project has demonstrated rapid growth, gathering an audience of 12 109 subscribers.
According to the latest data from 09 June, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by -147 over the last 30 days and by -12 over the last 24 hours, overall reach remains high.
- Verification status: Not verified
- Engagement rate (ER): The average audience engagement rate is 11.15%. Within the first 24 hours after publication, content typically collects 6.42% reactions from the total number of subscribers.
- Post reach: On average, each post receives 1 351 views. Within the first day, a publication typically gains 778 views.
- Reactions and interaction: The audience actively supports content: the average number of reactions per post is 4.
- Thematic interests: Content is focused on key topics such as boot, string, void, архитектура, resttemplate.
📝 Description and content policy
The author describes the resource as a platform for expressing subjective opinions:
“Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика
Связь: @devmangx
РКН: https://clck.ru/3H4WUg”
Thanks to the high frequency of updates (latest data received on 10 June, 2026), the channel maintains relevance and a high level of publication reach. Analytics show that the audience actively interacts with content, making it an important point of influence in the Technologies & Applications category.
@OneToMany и @ManyToOne помогают определить связи между сущностями в базе данных
Пример:
Пользователь может иметь много заказов →
@OneToMany(mappedBy = "user")
private List<Order> orders;
Каждый заказ принадлежит одному пользователю →
@ManyToOne
@JoinColumn(name = "user_id")
private User user;
👉 Java Portal1. Authentication Manager > Authentication Manager отвечает за обработку запросов на аутентификацию. Он делегирует процесс проверки различным провайдерам, которые можно настроить для поддержки разных способов аутентификации (например, логин/пароль, OAuth, LDAP). 2. Security Filter Chain > Security Filter Chain — это набор фильтров, перехватывающих HTTP-запросы. Каждый фильтр выполняет свою задачу, например, проверку аутентификации, контроль доступа или управление сессией. Фильтры выполняются в определённой последовательности, обеспечивая многоуровневую защиту. 3. UserDetailsService > Интерфейс UserDetailsService используется для загрузки пользовательских данных, необходимых для процессов аутентификации и авторизации. Разработчики могут реализовать его, чтобы подключаться к внешним источникам данных, таким как базы данных или сторонние сервисы. 4. GrantedAuthority > GrantedAuthority представляет собой полномочие, предоставляемое объекту Authentication. Обычно используется для определения ролей или разрешений пользователя в приложении, обеспечивая тонкую настройку доступа. 5. Security Context > Security Context хранит информацию о текущем пользователе — его данные аутентификации и полномочия. Эта информация размещается в потоко-безопасной переменной и доступна на протяжении всей сессии пользователя.Spring Security можно настраивать через XML или на Java. В современных приложениях предпочтение отдают Java-конфигурации за счёт её простоты и типобезопасности. На фото базовый пример настройки на Java 🤪 👉 Java Portal
java.lang.ClassCircularityError в Java
JVM выбрасывает java.lang.ClassCircularityError, если при загрузке классов обнаруживает циклическую зависимость, например:
class A extends B {}
class B extends A {}
Такую ошибку можно спровоцировать, если скомпилировать классы в два этапа или сгенерировать их во время выполнения.
Пример через компиляцию:
Создаем три файла:
// A.java
public class A extends B {}
class B {}
// B.java
public class B extends A {}
class A {}
// Run.java
void main() {
new A();
}
Выполняем команды:
mkdir step{1..3}
javac -d step1 A.java
javac -d step2 B.java
cp step1/A.class step3/
cp step2/B.class step3/
rm A.java B.java
java --enable-preview -cp step3/ Run.java
На этапе запуска получите ошибку:
Exception in thread "main" java.lang.ClassCircularityError: A
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:962)
...
at Run.main(Run.java:2)
👉 Java PortalDatabaseConnection conn = new DatabaseConnection();
И всё круто.
Но потом разные части приложения начинают плодить свои собственные соединения. Это дорого (память, сеть) и приводит к багам вроде гонок данных и грязных чтений.
Теперь вы застряли в дебаггинге странных ошибок, причина которых в том, что у вас несколько экземпляров объекта, который должен был быть только один
Проблемы:
⏩Много экземпляров вместо одного общего.
⏩Трата ресурсов.
⏩Нестабильное поведение.
⏩Отладка превращается в ад.
Как Singleton спасает ситуацию
⏩Создаём экземпляр один раз
⏩Переиспользуем везде
⏩Контролируем доступ через одну глобальную точку
class DatabaseConnection {
private static DatabaseConnection instance;
private DatabaseConnection() {
System.out.println("Connecting to database...");
}
public static synchronized DatabaseConnection getInstance() {
if (instance == null) {
instance = new DatabaseConnection();
}
return instance;
}
public void query(String sql) {
System.out.println("Running query: " + sql);
}
}
Когда использовать:
— Когда нужен только один объект (БД, логгер, менеджер потоков)
— Когда нужен глобальный доступ
— Когда важно беречь ресурсы
Java Portal@Override
public final String toString() {
return "Annotations are just modifiers";
}
Но на самом деле все эти варианты работают одинаково:
public @Override final String toString() ...
public final @Override String toString() ...
Все три записи синтаксически корректны и эквивалентны, компилятору всё равно, где стоит аннотация, он воспринимает её как модификатор 😉
Java Portal try не скомпилируется
Контекстные ключевые слова, напротив, можно использовать в качестве идентификаторов в большинстве случае
Начиная с Java 24, контекстные ключевые слова включают следующие:
exports opens requires uses yield
module permits sealed var
non-sealed provides to when
open record transitive with
Их можно использовать почти везде, где допустимо имя идентификатора
👉 Java PortalCompletableFuture, но где-то по ходу выполнения возникает исключение. Как с ним справиться? 😬
CompletableFuture предоставляет 3 способа обработки исключений
1. exceptionally() — этот метод принимает функцию обработки ошибки, которая выполняется, когда происходит исключение. Здесь у нас есть доступ только к ошибке, но не к данным, возвращённым с предыдущего этапа.
2. handle() — этот метод принимает результат и исключение и выполняется всегда после завершения предыдущего этапа. Это может быть как в случае успешного выполнения, так и при возникновении исключений.
3. whenComplete() — метод похож на handle(), но не изменяет результат. Он возвращает CompletableFuture и может быть использован в цепочке. Используется для выполнения побочных действий после завершения, вне зависимости от результата
👉 Java Portal
Available now! Telegram Research 2025 — the year's key insights 
