Java | Вопросы собесов
前往频道在 Telegram
Cайт easyoffer.ru Реклама @easyoffer_adv ВП @easyoffer_vp Тесты t.me/+icUwivvbGOkwNWRi Задачи t.me/+8eqUTboisnkyZjQy Вакансии t.me/+4pspF5nDjgM4MjQy
显示更多📈 Telegram 频道 Java | Вопросы собесов 的分析概览
频道 Java | Вопросы собесов (@easy_java_ru) 俄语 语言赛道中的 是活跃参与者。目前社区聚集了 11 457 名订阅者,在 技术与应用 类别中位列第 10 900,并在 俄罗斯 地区排名第 57 494 位。
📊 受众指标与增长动态
自 невідомо 创建以来,项目保持高速增长,吸引了 11 457 名订阅者。
根据 09 六月, 2026 的最新数据,频道保持稳定运转。过去 30 天订阅人数变化为 13,过去 24 小时变化为 -1,整体触达仍然可观。
- 认证状态: 未认证
- 互动率 (ER): 平均受众互动率为 10.15%。内容发布后 24 小时内通常能获得 7.30% 的反应,占订阅者总量。
- 帖子覆盖: 每篇帖子平均可获得 1 162 次浏览,首日通常累积 836 次浏览。
- 互动与反馈: 受众积极参与,单帖平均反应数为 6。
- 主题关注点: 内容集中在 ставь, void, string, строка, static 等核心主题上。
📝 描述与内容策略
作者将该频道定位为表达主观观点的平台:
“Cайт easyoffer.ru
Реклама @easyoffer_adv
ВП @easyoffer_vp
Тесты t.me/+icUwivvbGOkwNWRi
Задачи t.me/+8eqUTboisnkyZjQy
Вакансии t.me/+4pspF5nDjgM4MjQy”
凭借高频更新(最新数据采集于 10 六月, 2026),频道始终保持新鲜度与高覆盖。分析显示受众积极互动,使其成为 技术与应用 类别中的关键影响点。
11 457
订阅者
-124 小时
+47 天
+1330 天
帖子存档
11 456
Как синхронизировать команду?
Пригласить в Битрикс24. Бесплатный онлайн-сервис для бизнеса и совместной работы.
Мессенджер, CRM для продаж, Видеозвонки, Задачи, Календарь, Файлы и ИИ-помощник.
Заберите бесплатно 10+ инструментов в одном сервисе.
Зарегистрироваться
#реклама 16+
office-online.bitrix24.ru
О рекламодателе
11 456
🤔 Как обеспечить TLS для веб-приложения?
1. Настройте HTTPS:
- Установите SSL-сертификат на сервер (например, через Let’s Encrypt).
- Настройте сервер (Apache, Nginx) для принудительного использования HTTPS.
2. Редирект HTTP → HTTPS:
- Настройте перенаправление на уровне сервера или используйте фильтры.
3. Установите безопасные атрибуты куки:
- Используйте Secure и HttpOnly, чтобы защитить куки от утечки.
4. Шифрование данных:
- Передавайте конфиденциальные данные только через HTTPS.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
11 456
Ивент, спецпроект, реклама – где будем обсуждать?
В Битрикс24 Коллабы!✨
Создайте пространство для совместных проектов с подрядчиками в Битрикс24 Коллабы. Чаты, задачи, файлы и звонки — для продуктивной работы без заморочек. Посмотрите, как это работает.
Смотреть
#реклама 16+
collabs.bitrix24.ru
О рекламодателе
11 456
🤔 В чем разница между Statement и PreparedStatement?
Это два интерфейса в JDBC, которые используются для выполнения SQL-запросов к базе данных. Основные различия между ними касаются производительности, безопасности и удобства использования.
🚩Statement
Statement используется для выполнения простых SQL-запросов. Запросы формируются и передаются в базу данных в виде строки. Подходит для простых запросов. Не оптимизирован для повторного выполнения. Каждый раз, когда запрос передается в базу данных, он компилируется и выполняется заново. Уязвим к SQL-инъекциям. Поскольку запрос формируется путем конкатенации строк, злоумышленники могут внедрять вредоносный SQL-код.
Statement stmt = connection.createStatement();
String query = "SELECT * FROM employees WHERE department = 'HR'";
ResultSet rs = stmt.executeQuery(query);
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
System.out.println("ID: " + id + ", Name: " + name);
}
stmt.close();
🟠PreparedStatement
PreparedStatement используется для выполнения предварительно скомпилированных SQL-запросов. Это позволяет повысить производительность и безопасность. Оптимизирован для повторного выполнения. Запрос компилируется только один раз, а затем может многократно выполняться с разными параметрами, что повышает производительность. Защита от SQL-инъекций. Использует параметризованные запросы, которые помогают избежать уязвимостей, связанных с SQL-инъекциями. Удобство работы с параметрами. Позволяет устанавливать значения параметров с использованием методов setInt(), setString() и других.
String query = "SELECT * FROM employees WHERE department = ?";
PreparedStatement pstmt = connection.prepareStatement(query);
pstmt.setString(1, "HR");
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
System.out.println("ID: " + id + ", Name: " + name);
}
pstmt.close();
🚩Основные различия
🟠Производительность
Statement: Каждый запрос компилируется заново, что снижает производительность при многократном выполнении одного и того же запроса.
PreparedStatement: Запрос компилируется один раз и может многократно выполняться с разными параметрами, что повышает производительность.
🟠Безопасность
Statement: Уязвим к SQL-инъекциям, поскольку запросы формируются путем конкатенации строк.
PreparedStatement: Использует параметризованные запросы, что защищает от SQL-инъекций.
🟠Удобство использования
Statement: Подходит для простых, одноразовых запросов.
PreparedStatement: Удобен для многократного выполнения запросов с разными параметрами.
🟠Типы запросов
Оба интерфейса могут выполнять запросы типа SELECT, INSERT, UPDATE, DELETE, но PreparedStatement более удобен для запросов с параметрами.
Ставь 👍 и забирай 📚 Базу знаний11 456
🎓 Буткэмп "Все как на работе" — Прокачай навыки до уровня коммерческого разработчика за месяц + неделя
Мы предлагаем практическое обучение, максимально приближенное к реальной работе в IT-компании. Подключайся к боевому проекту и изучай технологии, которые используют профессиональные разработчики.
Почему этот практикум — уникальная возможность:
✔️ Боевой проект (готов на 60%) — настоящая разработка в команде из 7 программистов
✔️ Полный цикл разработки:
1) Постановка задач в Jira
2) Работа с Git и создание Merge Request
3) Прохождение код-ревью (кросс-ревью и финальное ревью от тимлида)
4) Внедрение CI/CD, тестирование и деплой
✔️ Технологии уровня рынка:
Java 17, Spring Boot 3, Hibernate 6
JWT, Spring Security, PostgreSQL
Docker, Liquibase, MapStruct
JUnit5 / Mockito / Testcontainers
Организация обучения:
📅 Длительность: 5 недель
👩💻 4 занятия в неделю (Zoom):
2 занятия — изучение технологий
2 занятия — проектная работа
Стоимость:
💳 Полная стоимость: 70 000 ₽
🔥 Ранняя цена до 15 февраля: 49 000 ₽
✔️ Возможна оплата частями
📅 Старт курса: 9 марта 2025
📍 Осталось мест: 6 из 15
Что вы получите:
🔑 Навык коммерческой разработки с пониманием транзакций, паттернов и ключевых бизнес процессов
🚀 Готовность уверенно работать в профессиональной команде и писать код коммерческого уровня
🔗 Записаться на курс и устроиться мидлом: https://javaguru.by/bootcamp
Подробнее в видео: https://rutube.ru/video/91642fe34b761f231bf0c2b63a027662/
#Java #ITОбучение #Практика
Реклама: ИП Бруев Алексей Тимофеевич, ИНН: 381258351501
11 456
Целевые кибератаки 2024: аналитика и кейсы
На вебинаре 27 февраля команда Solar 4RAYS подведет итоги по следам расследований целевых атак 2024 года
Вы узнаете, как профессиональные хакеры атакуют российские компании и обходят системы безопасности, когда защита не соответствует уровню угроз. А также какие тактики используют киберпреступники, каков конечный импакт для систем ИБ от воздействия хакеров и как выстроить стратегию защиты.
Что будет на вебинаре:
- Какие инструменты противодействия актуальны в 2025 году;
- Какие отрасли бизнеса подвергались атакам и с какой целью;
- Какие интересные техники использовали злоумышленники: разбор кейсов расследований.
Все примеры и рекомендации основаны на реальных расследованиях инцидентов в российских организациях.
Зарегистрироваться
#реклама 16+
rt-solar.ru
О рекламодателе
11 456
🤔 Какой существует способ удостовериться, что сервлеты доступны только для пользователя с верной сессией?
1. Фильтры (Filters):
- Создайте фильтр, который проверяет, существует ли активная сессия, и перенаправляет на страницу входа, если сессия недействительна.
2. Настройка безопасности в web.xml:
- Используйте <security-constraint> и роли для ограничения доступа к сервлетам.
3. Проверка в коде:
- Проверяйте сессию непосредственно в сервлете с помощью request.getSession(false).
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
11 456
Простая подработка от 2 ч. в день. Обучение бесплатно
ИИ-Таргетолог Простой способ начать зарабатывать в интернете! от 30 - 150 000 рублей в месяц!
Узнаете, как настраивать таргетированную рекламу с помощью нейросетей за 1 видео!
Без траты долгих лет на обучение. Без мутных и незаконных схем.
Узнать больше
#реклама 16+
institute.yagla.ru
О рекламодателе
11 456
🤔 Является ли пустым пул строк при старте jar файла или там есть какие-то значения?
Пул строк в Java не является пустым при старте JAR файла. Он изначально содержит несколько предопределенных строковых литералов, которые JVM использует для своей внутренней работы, а также строковые литералы, используемые в загруженных классах и стандартных библиотеках.
🚩Что изначально содержится
🟠Предопределенные строковые литералы
JVM и стандартные библиотеки Java используют различные строковые литералы для своей работы. Эти строки добавляются в пул строк при запуске JVM. Примеры таких строк включают имена основных классов и пакетов (например,
"java/lang/Object", "java/lang/String").
🟠Строковые литералы, используемые в загруженных классах
Когда классы загружаются JVM, все строковые литералы, используемые в этих классах, добавляются в пул строк. Это включает строки, используемые в JAR файле, а также строки из стандартных библиотек Java, которые загружаются при старте.
🚩Пример строк в пуле при старте
Для демонстрации этого можно написать простой код, который проверяет, присутствуют ли определенные строки в пуле строк при старте программы.
public class StringPoolDemo {
public static void main(String[] args) {
// Проверка стандартных строк, которые могут быть в пуле строк
String str1 = "java";
String str2 = "lang";
String str3 = "Object";
// Вывод строк
System.out.println("str1: " + str1);
System.out.println("str2: " + str2);
System.out.println("str3: " + str3);
// Проверка строк в пуле строк
System.out.println("Is 'java' in pool: " + (str1 == "java"));
System.out.println("Is 'lang' in pool: " + (str2 == "lang"));
System.out.println("Is 'Object' in pool: " + (str3 == "Object"));
}
}
🚩Что происходит при старте JVM
🟠Инициализация JVM
При запуске JVM загружаются системные классы, такие как java.lang.Object, java.lang.String, java.lang.System, и другие. Строковые литералы, используемые в этих классах, добавляются в пул строк.
🟠Загрузка пользовательских классов
Когда JVM загружает пользовательские классы из JAR файла, все строковые литералы в этих классах также добавляются в пул строк.
Ставь 👍 и забирай 📚 Базу знаний11 456
Все новости из мира программирования на этом канале @umnyiprogrammist
Подписывайтесь, чтобы не упустите ничего важного
Ставь 👍 и забирай 📚 Базу знаний
11 456
Ошибки в коде — ключ для атаки на веб-приложения
Всего одна ошибка — и данные ваших клиентов могут оказаться в руках мошенников.
Иногда достаточно одной неверной строчки кода, чтобы хакеры получили доступ к информации о пользователях. Чтобы этого не произошло, важно позаботиться о безопасности еще на начальном этапе разработки.
Как это сделать, расскажут эксперты «Солара» и AppSec Solutions на вебинаре 18 февраля.
Вы узнаете:
✅какие языки программирования наиболее уязвимы — исследования от AppSec Solutions,
✅как проверить веб-приложение и ПО на безопасность без навыка разработки,
✅какие новые возможности появились в Solar appScreener 3.15.0.
Регистрируйтесь!
Зарегистрироваться
#реклама 16+
rt-solar.ru
О рекламодателе
11 456
🤔 Как уведомить объект в сессии, что сессия недействительна или закончилась?
1. Через HttpSessionListener:
- Реализуйте этот интерфейс для обработки событий завершения сессии (sessionDestroyed).
2. Через HttpSessionBindingListener:
- Добавьте этот интерфейс в объект, который добавляется в сессию, чтобы он мог отреагировать на удаление.
3. События атрибутов:
- Используйте HttpSessionAttributeListener для уведомления при удалении атрибута из сессии.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
11 456
Онлайн-интенсив для ИТ-специалистов в Открытых школах Т1
Уже есть опыт работы в ИТ, но хочешь прокачать скилы и продвинуться в карьере?
Тогда скорее залетай на бесплатный ИТ-интенсив в Открытых школах Т1.
Открытые школы — это возможность усилить свои навыки и получить оффер в ИТ-холдинг Т1. И все это за месяц, онлайн и в удобное вечернее время.
Что ты получишь?
✅ бесплатное обучение в гибком формате: по вечерам, онлайн, из любого города РФ и РБ.
✅ материалы от HR для прокачки резюме и подготовки к интервью в Т1.
✅ много практики и уникальный рыночный опыт.
✅ поддержку опытных преподавателей и карьерный фаст-трек до мидла в Т1 для лучших выпускников.
✅ реальный шанс получить оффер в Т1.
Более 1000 специалистов уже прошли этот путь — теперь твоя очередь!
Регистрация до 14 марта!
Подать заявку
#реклама 16+
t1.ru
О рекламодателе
11 456
🤔 Роль `serialVersionUID` в сериализации
Это уникальный идентификатор версии класса, который используется механизмом сериализации для проверки совместимости классов при десериализации объектов. Он играет ключевую роль в предотвращении ошибок при изменении классов, участвующих в сериализации.
🚩Почему `serialVersionUID` важен?
🟠Гарантия совместимости при десериализации
Когда объект сериализуется (превращается в поток байтов), вместе с ним сохраняется и
serialVersionUID. При десериализации JVM сравнивает serialVersionUID сохранённого объекта с serialVersionUID текущего класса. Если они не совпадают, выбрасывается исключение InvalidClassException, так как структура класса могла измениться.
🟠Предотвращение ошибок при изменениях класса
Если класс изменяется (например, добавляется новое поле), но serialVersionUID остаётся неизменным, JVM считает, что класс всё ещё совместим с более старой версией, и десериализация проходит успешно.
🟠Явное управление версиями
Если serialVersionUID не указан явно, JVM генерирует его автоматически на основе структуры класса. Это может привести к неожиданным проблемам, если класс изменится, так как автоматически вычисленный serialVersionUID изменится.
🚩Как использовать `serialVersionUID`?
import java.io.*;
class Person implements Serializable {
private static final long serialVersionUID = 1L; // Версия класса
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Person{name='" + name + "', age=" + age + "}";
}
}
🚩Что будет, если не указать `serialVersionUID`?
Если не определить serialVersionUID, JVM сгенерирует его автоматически. Однако:
Он будет зависеть от структуры класса.
Малейшее изменение в коде (даже порядок методов) изменит serialVersionUID.
Это может привести к InvalidClassException при десериализации.
Ставь 👍 и забирай 📚 Базу знаний11 456
Repost from easyoffer
Ищу работу пол года
Практически под каждым постом в этом канале я вижу комментарии от людей, которые ищут работу по полгода. Это перерастает в обсуждение того, как нужно (или не нужно) искать работу, почему процесс найма сломан и как они откликались на фейковые вакансии.
Честно говоря, искать работу полгода — это нонсенс. Очевидно, что человек делает что-то не так. Главная ошибка, которую совершают многие, — это создание иллюзии поиска работы.
То есть человек вроде бы ищет работу, но делает это неэффективно, тратя время на нецелевые действия. Например:
➖ Просматривает вакансии перед откликом.
➖ Пытается понять, подходит ли он под вакансию. Если считает, что не подходит — не откликается.
➖ Пишет сопроводительные письма (иногда даже уникальные под каждую вакансию).
➖ Заполняет анкеты, проходит тесты.
Все эти действия отнимают время, но не приводят к результату.
Почему это не работает?
HR-менеджер не может вручную отсмотреть 2000 откликов, оценить каждое резюме и прочитать сопроводительные письма. Поэтому компании используют ATS-системы (системы автоматического подбора), которые анализируют резюме и определяют процент его соответствия вакансии.
Что делать, чтобы повысить шансы?
1️⃣ Добавить ключевые навыки в резюме — и в основной текст, и в теги. Возьмите их с easyoffer.ru
2️⃣ Убрать нерелевантный опыт, оставить только подходящий.
3️⃣ Оформить опыт так, чтобы он выглядел релевантным. Если у вас его нет, укажите проекты, стажировки или другой опыт, который можно представить как работу от 1 года. Если опыт слишком большой, сузьте его до 6 лет.
4️⃣ Откликаться на все вакансии без разбору. Если вы Junior, не ищите только стажер или Junior-вакансии — пробуйте везде. Не отказывайте себе сами, пусть это решит HR
5️⃣ Сделать резюме публичным, потому что HR-менеджеры часто ищут кандидатов не только среди откликов, но и в базе резюме.
6️⃣ Используйте ИИ по минимуму – ATS-системы считывают это и помечают "сгенерировано ИИ"
‼️ Главное правило: чем больше откликов — тем выше шанс получить оффер. Делайте резюме удобным для ATS-систем, и вас заметят.
1. Посмотрите видео о том как я вывел свою резюме в Топ1 на HH
2. Посмотрите видео как я нашел первую работу
3. Прочитайте этот кейс про оптимизацию резюме
Если прям вообще тяжело.
Создайте несколько разных резюме. Создайте 2, 3 да хоть 10 резюме. Настройте авто-отлики и ждите приглашения на собесы.
Не нужно создавать иллюзию поиска работы, сделайте несколько простых и актуальных действий.
11 456
🤔 Что такое «сессия»?
Это способ хранения информации о состоянии взаимодействия между клиентом и сервером. Она используется для идентификации пользователя, управления его действиями и передачи данных между запросами. Данные сессии хранятся на сервере, а идентификатор сессии передается клиенту через куки или URL.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
11 456
🤔 Как сконфигурировать параметры инициализации для JSP ?
Параметры инициализации могут быть настроены через файл конфигурации
web.xml или с помощью аннотаций в сервлетах. Могут быть настроены для всего веб-приложения или для конкретных сервлетов и страниц.
🚩Конфигурация параметров инициализации через web.xml
🟠Параметры инициализации для сервлетов и JSP страниц
Можно настроить в разделе <servlet> элемента конфигурационного файла web.xml.
<web-app>
<servlet>
<servlet-name>ExampleServlet</servlet-name>
<jsp-file>/example.jsp</jsp-file>
<init-param>
<param-name>param1</param-name>
<param-value>value1</param-value>
</init-param>
<init-param>
<param-name>param2</param-name>
<param-value>value2</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>ExampleServlet</servlet-name>
<url-pattern>/example</url-pattern>
</servlet-mapping>
</web-app>
Доступ к параметрам инициализации в JSP можно получить через объект config в JSP.
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Initialization Parameters Example</title>
</head>
<body>
<h1>Initialization Parameters Example</h1>
<%
// Получение параметров инициализации
String param1 = config.getInitParameter("param1");
String param2 = config.getInitParameter("param2");
%>
<p>Param1: <%= param1 %></p>
<p>Param2: <%= param2 %></p>
</body>
</html>
🟠Параметры инициализации для всего приложения
Можно настроить в разделе <context-param> элемента конфигурационного файла web.xml.
<web-app>
<context-param>
<param-name>globalParam1</param-name>
<param-value>globalValue1</param-value>
</context-param>
<context-param>
<param-name>globalParam2</param-name>
<param-value>globalValue2</param-value>
</context-param>
</web-app>
Доступ к параметрам инициализации для всего приложения можно получить через объект ServletContext.
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Global Initialization Parameters Example</title>
</head>
<body>
<h1>Global Initialization Parameters Example</h1>
<%
// Получение глобальных параметров инициализации
String globalParam1 = application.getInitParameter("globalParam1");
String globalParam2 = application.getInitParameter("globalParam2");
%>
<p>Global Param1: <%= globalParam1 %></p>
<p>Global Param2: <%= globalParam2 %></p>
</body>
</html>
Ставь 👍 и забирай 📚 Базу знаний11 456
⚡️ В сети начали массово сливать курсы и книги известных онлайн школ по айти
Вот отсортированная база с тонной материала (постепенно пополняется):
БАЗА (4687 видео/книг):
(363 видео, 87 книги) — Python
(415 видео, 68 книги) — Frontend
(143 видео, 33 книги) — ИБ/Хакинг
(352 видео, 89 книги) — С/С++
(343 видео, 87 книги) — Java
(176 видео, 32 книги) — Git
(293 видео, 63 книги) — C#
(174 видео, 91 книги) — DevOps
(167 видео, 53 книги) — PHP
(227 видео, 83 книги) — SQL/БД
(163 видео, 29 книги) — Linux
(114 видео, 77 книги) — Сисадмин
(107 видео, 43 книги) — BA/SA
(181 видео, 32 книги) — Go
(167 видео, 43 книги) — Kotlin/Swift
(112 видео, 24 книги) — Flutter
(137 видео, 93 книги) — DS/ML
(113 видео, 82 книги) — GameDev
(183 видео, 37 книги) — Дизайн
(129 видео, 73 книги) — QA
(213 видео, 63 книги) — Rust
(121 видео, 24 книги) — 1С
(136 видео, 33 книги) — PM/HR
Скачивать ничего не нужно — все выложено в Telegram
11 456
🤔 Можно ли одновременно использовать в сервлете PrintWriter и ServletOutputStream?
Нет, их одновременное использование в одном ответе запрещено. Это связано с тем, что использование одного из них фиксирует тип потока (символьный или байтовый), и дальнейшая попытка использовать другой поток вызовет исключение IllegalStateException. Вы должны выбрать только один подходящий поток для формирования ответа.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
11 456
🤔 Как работать на Spring?
Spring – это мощный фреймворк для разработки Java-приложений, который упрощает работу с бэкендом, базами данных и веб-сервисами.
🚩Основные шаги для работы на Spring
1⃣Настроить проект
2⃣Создать контроллеры (обрабатывают HTTP-запросы).
3⃣Добавить сервисы (логика приложения).
4⃣Работать с базой данных (Spring Data JPA, Hibernate).
5⃣Запустить приложение и тестировать.
🚩Настройка проекта (Spring Boot)
🟠Создание проекта через Spring Initializr
Самый быстрый способ – использовать [Spring Initializr](https://start.spring.io/).
Заходим на [start.spring.io](https://start.spring.io/)
Выбираем:
Maven / Gradle
Java 17+
Spring Boot 3+
Зависимости: Spring Web, Spring Data JPA, PostgreSQL/MySQL (если нужна БД)
Скачиваем и открываем в IntelliJ IDEA или VS Code.
<dependencies>
<!-- Spring Boot Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Spring Boot JPA + Hibernate -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!-- Драйвер для PostgreSQL -->
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
</dependency>
<!-- Lombok (автоматически генерирует геттеры/сеттеры) -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
🚩Создание контроллера (REST API)
Контроллер обрабатывает HTTP-запросы (GET, POST, PUT, DELETE).
@RestController
@RequestMapping("/hello")
public class HelloController {
@GetMapping
public String sayHello() {
return "Привет, Spring!";
}
}
Запрос в браузере
http://localhost:8080/helloОтвет
Привет, Spring!🚩Добавление бизнес-логики (Service Layer) Сервисы обрабатывают данные и реализуют бизнес-логику.
@Service
public class UserService {
public String getUserGreeting(String name) {
return "Привет, " + name + "!";
}
}
Использование сервиса в контроллере
@RestController
@RequestMapping("/user")
public class UserController {
private final UserService userService;
@Autowired // Внедрение зависимости
public UserController(UserService userService) {
this.userService = userService;
}
@GetMapping("/{name}")
public String getUserGreeting(@PathVariable String name) {
return userService.getUserGreeting(name);
}
}
Запрос в браузере:
http://localhost:8080/user/ИванОтвет
Привет, Иван!Ставь 👍 и забирай 📚 Базу знаний
现已上线!2025 年 Telegram 研究 — 年度关键洞察 
