Базовая десериализация и аннотации в Gson
Десериализация JSON в Java-объект
Метод fromJson(String, Class<T>)
Десериализация — процесс преобразования JSON-строки в Java-объект. Основной метод:
Пример
Допустим, есть JSON:
Соответствующий Java-класс:
Десериализация:
Обработка ошибок
Gson выбрасывает JsonSyntaxException при невалидном JSON:
Аннотации @SerializedName и @Expose
@SerializedName — для нестандартных ключей JSON
Если имя поля в Java не совпадает с ключом в JSON:
Пример JSON:
@Expose — избирательная сериализация/десериализация
Поля без @Expose игнорируются. Требуется особый Gson:
Пример класса:
Отличие от Jackson
Аннотации:
В Gson: @SerializedName → @JsonProperty в Jackson.
@Expose → Аналог @JsonInclude + @JsonIgnore.
Подход:
Gson использует рефлексию по умолчанию, Jackson — аннотации.
Производительность:
Jackson быстрее в некоторых сценариях, но Gson проще в настройке.
Полный пример
Вывод:
Ключевые моменты
@SerializedName решает проблему различий в именах JSON/Java.
@Expose дает контроль над процессами сериализации/десериализации.
Для работы @Expose требуется GsonBuilder.
#Java #middle #Gson #SerializedName #Expose
Десериализация JSON в Java-объект
Метод fromJson(String, Class<T>)
Десериализация — процесс преобразования JSON-строки в Java-объект. Основной метод:
Gson gson = new Gson();
MyClass obj = gson.fromJson(jsonString, MyClass.class);
Пример
Допустим, есть JSON:
{
"model": "Tesla Model S",
"year": 2023,
"electric": true
}
Соответствующий Java-класс:
public class Car {
private String model;
private int year;
private boolean electric;
// Обязателен конструктор по умолчанию (или @SerializedConstructor в новых версиях)
public Car() {}
// Геттеры и сеттеры
public String getModel() { return model; }
public int getYear() { return year; }
public boolean isElectric() { return electric; }
}
Десериализация:
String json = "{\"model\":\"Tesla Model S\",\"year\":2023,\"electric\":true}";
Gson gson = new Gson();
Car car = gson.fromJson(json, Car.class);
System.out.println(car.getModel()); // Tesla Model S
Обработка ошибок
Gson выбрасывает JsonSyntaxException при невалидном JSON:
try {
Car car = gson.fromJson("{invalid json}", Car.class);
} catch (JsonSyntaxException e) {
System.err.println("Ошибка парсинга JSON: " + e.getMessage());
}
Аннотации @SerializedName и @Expose
@SerializedName — для нестандартных ключей JSON
Если имя поля в Java не совпадает с ключом в JSON:
public class User {
@SerializedName("user_name")
private String name; // Сопоставляется с JSON-ключом "user_name"
@SerializedName(value = "user_age", alternate = {"age", "years"})
private int age; // Допустимые альтернативные ключи в JSON
}
Пример JSON:
{"user_name": "Alice", "age": 25}
@Expose — избирательная сериализация/десериализация
Поля без @Expose игнорируются. Требуется особый Gson:
Gson gson = new GsonBuilder()
.excludeFieldsWithoutExposeAnnotation()
.create();
Пример класса:
public class Product {
@Expose
private String name; // Сериализуется и десериализуется
@Expose(serialize = false)
private int id; // Только десериализация (из JSON в Java)
private String secret; // Игнорируется полностью
}
Отличие от Jackson
Аннотации:
В Gson: @SerializedName → @JsonProperty в Jackson.
@Expose → Аналог @JsonInclude + @JsonIgnore.
Подход:
Gson использует рефлексию по умолчанию, Jackson — аннотации.
Производительность:
Jackson быстрее в некоторых сценариях, но Gson проще в настройке.
Полный пример
import com.google.gson.*;
import com.google.gson.annotations.*;
public class Main {
static class Device {
@SerializedName("device_name")
@Expose
private String name;
@Expose(deserialize = false)
private String manufacturer;
public Device(String name, String manufacturer) {
this.name = name;
this.manufacturer = manufacturer;
}
}
public static void main(String[] args) {
Gson gson = new GsonBuilder()
.excludeFieldsWithoutExposeAnnotation()
.setPrettyPrinting()
.create();
// Сериализация (manufacturer исключен, т.к. deserialize = false)
Device device = new Device("Phone", "BrandX");
String json = gson.toJson(device);
System.out.println(json);
// Десериализация
String inputJson = "{\"device_name\":\"Tablet\",\"manufacturer\":\"BrandY\"}";
Device parsed = gson.fromJson(inputJson, Device.class);
System.out.println(parsed.name); // "Tablet"
}
}
Вывод:
{
"device_name": "Phone"
}
Ключевые моменты
@SerializedName решает проблему различий в именах JSON/Java.
@Expose дает контроль над процессами сериализации/десериализации.
Для работы @Expose требуется GsonBuilder.
#Java #middle #Gson #SerializedName #Expose
Что выведет код?
#Tasks
public class Task150525 {
public static void main(String[] args) {
String str = " Hello, World! ";
str.trim().toLowerCase().substring(7);
System.out.println(str);
}
}
#Tasks
Варианты ответа:
Anonymous Quiz
10%
"hello, world!"
55%
"world!"
28%
" Hello, World! "
3%
" Java forever "
5%
Ошибка какая-нибудь
Полный разбор примитивного типа int в Java
Тип int — это один из восьми примитивных типов данных в Java. Несмотря на его кажущуюся простоту, понимание того, как он устроен, работает в памяти и взаимодействует с JVM, критически важно для глубокого освоения языка.
Общая информация
Тип: примитивный (primitive)
Размер: 32 бита (4 байта)
Диапазон значений: от -2,147,483,648 до 2,147,483,647 (т.е. от -2³¹ до 2³¹ - 1)
Знаковый: да (signed)
Формат представления: two's complement (двойное дополнение)
Пример объявления переменной:
Что значит signed (знаковый тип)?
В типе int один из битов используется для хранения знака числа:
0 — положительное число
1 — отрицательное число
Это позволяет хранить как положительные, так и отрицательные значения. Всего 2³² возможных комбинаций битов. Из них:
половина — для отрицательных чисел
половина — для положительных чисел (включая 0)
Представление чисел: формат two’s complement
Java использует формат двойного дополнения (two’s complement) для хранения отрицательных чисел. Это универсальный и эффективный способ хранения знаковых чисел в бинарной форме.
Как это работает:
Чтобы получить -x:
Возьми двоичное представление x.
Инвертируй все биты (обратное дополнение).
Прибавь 1.
Пример: -5
5 = 00000000 00000000 00000000 00000101
Инверсия = 11111111 11111111 11111111 11111010
+1 → 11111111 11111111 11111111 11111011
Так хранится -5 в памяти.
Где хранится int в памяти?
В стеке (stack)
Если переменная int — локальная переменная метода, она хранится в стековой рамке метода.
В куче (heap)
Если int является полем объекта (int age внутри класса), то он хранится в куче, как часть объекта.
Что такое стековая рамка (stack frame)?
Каждый вызов метода в Java создаёт отдельную область в стеке, называемую stack frame. Она содержит:
Локальные переменные
Временные значения
Адрес возврата
Операнды
Когда метод завершается — стековая рамка удаляется, а память освобождается.
Как происходит запись и удаление int?
Запись: JVM резервирует 4 байта и записывает число в двоичном формате.
Удаление: локальные переменные исчезают при завершении метода. Если int был частью объекта, он удаляется при сборке мусора (GC), когда объект становится недостижимым.
Особенности
1. Переполнение (overflow)
int не выбрасывает исключений при выходе за границы диапазона:
Если продолжить увеличивать значение переменной типа int после переполнения, то поведение будет цикличным. То есть от 2_147_483_647 до -2_147_483_648 не выходя за пределы этих значений.
2. Побитовые операции
Java поддерживает прямые операции над битами:
& — побитовое И
| — побитовое ИЛИ
^ — XOR
~ — побитовое НЕ
<< — сдвиг влево
>> — сдвиг вправо (с сохранением знака)
>>> — сдвиг вправо (без сохранения знака)
Пример:
3. Автоупаковка и Integer-кэш
При автоупаковке int → Integer:
Но:
Почему?
Значения от -128 до 127 кэшируются.
JVM использует один и тот же объект для этих чисел (ради оптимизации).
Сравнение == проверяет ссылку, а не значение.
Для сравнения значений используйте .equals().
Преобразования типов
int неявно (автоматически) расширяется до long, float, double.
Сужающее преобразование требует явного приведения:
#Java #для_новичков #beginner #int
Тип int — это один из восьми примитивных типов данных в Java. Несмотря на его кажущуюся простоту, понимание того, как он устроен, работает в памяти и взаимодействует с JVM, критически важно для глубокого освоения языка.
Общая информация
Тип: примитивный (primitive)
Размер: 32 бита (4 байта)
Диапазон значений: от -2,147,483,648 до 2,147,483,647 (т.е. от -2³¹ до 2³¹ - 1)
Знаковый: да (signed)
Формат представления: two's complement (двойное дополнение)
Пример объявления переменной:
int number = 42;
Что значит signed (знаковый тип)?
В типе int один из битов используется для хранения знака числа:
0 — положительное число
1 — отрицательное число
Это позволяет хранить как положительные, так и отрицательные значения. Всего 2³² возможных комбинаций битов. Из них:
половина — для отрицательных чисел
половина — для положительных чисел (включая 0)
Представление чисел: формат two’s complement
Java использует формат двойного дополнения (two’s complement) для хранения отрицательных чисел. Это универсальный и эффективный способ хранения знаковых чисел в бинарной форме.
Как это работает:
Чтобы получить -x:
Возьми двоичное представление x.
Инвертируй все биты (обратное дополнение).
Прибавь 1.
Пример: -5
5 = 00000000 00000000 00000000 00000101
Инверсия = 11111111 11111111 11111111 11111010
+1 → 11111111 11111111 11111111 11111011
Так хранится -5 в памяти.
Где хранится int в памяти?
В стеке (stack)
Если переменная int — локальная переменная метода, она хранится в стековой рамке метода.
В куче (heap)
Если int является полем объекта (int age внутри класса), то он хранится в куче, как часть объекта.
Что такое стековая рамка (stack frame)?
Каждый вызов метода в Java создаёт отдельную область в стеке, называемую stack frame. Она содержит:
Локальные переменные
Временные значения
Адрес возврата
Операнды
Когда метод завершается — стековая рамка удаляется, а память освобождается.
Как происходит запись и удаление int?
Запись: JVM резервирует 4 байта и записывает число в двоичном формате.
Удаление: локальные переменные исчезают при завершении метода. Если int был частью объекта, он удаляется при сборке мусора (GC), когда объект становится недостижимым.
Особенности
1. Переполнение (overflow)
int не выбрасывает исключений при выходе за границы диапазона:
int a = Integer.MAX_VALUE; // 2_147_483_647
a++;
System.out.println(a); // -2_147_483_648 (переполнение)
Чтобы отлавливать такие случаи, используйте Math.addExact(), которая кидает ArithmeticException.
Если продолжить увеличивать значение переменной типа int после переполнения, то поведение будет цикличным. То есть от 2_147_483_647 до -2_147_483_648 не выходя за пределы этих значений.
2. Побитовые операции
Java поддерживает прямые операции над битами:
& — побитовое И
| — побитовое ИЛИ
^ — XOR
~ — побитовое НЕ
<< — сдвиг влево
>> — сдвиг вправо (с сохранением знака)
>>> — сдвиг вправо (без сохранения знака)
Пример:
int x = 5; // 00000101
int y = 3; // 00000011
int result = x & y; // 00000001 (1)
3. Автоупаковка и Integer-кэш
При автоупаковке int → Integer:
Integer a = 100;
Integer b = 100;
System.out.println(a == b); // true
Но:
Integer a = 1000;
Integer b = 1000;
System.out.println(a == b); // false
Почему?
Значения от -128 до 127 кэшируются.
JVM использует один и тот же объект для этих чисел (ради оптимизации).
Сравнение == проверяет ссылку, а не значение.
Для сравнения значений используйте .equals().
Преобразования типов
int неявно (автоматически) расширяется до long, float, double.
Сужающее преобразование требует явного приведения:
byte b = (byte) 130; // b == -126
#Java #для_новичков #beginner #int
Что выведет код?
#Tasks
public class Task160525 {
public static void main(String[] args) {
int a = 2_000_000_000;
int b = 2_000_000_000;
int c = a + b;
System.out.println(c);
}
}
#Tasks
Варианты ответа:
Anonymous Quiz
24%
4000000000
7%
294967295
41%
-294967296
27%
Ошибка компиляции
0%
0
С 10.05 по 16.05
Следующая неделя
Воскресный мотивационный пост: Почему все-таки программирование?
Примитивные типы данных в Java
Глубокое изучение типа данных byte в Java
Полный разбор примитивного типа int в Java
Gson: основы сериализации и десериализации
Базовая десериализация и аннотации в Gson
Авторская статья: Самые пугающие три точки кода. Varargs в Java
Полезные статьи и видео:
Идемпотентность и зачем она
Первые шаги в Spring Security с JWT
И посмеяться, тем кто знает английский
Как и всегда, задачи можно найти под тегом - #Tasks, мемы - #Mems
#memory
Следующая неделя
Воскресный мотивационный пост: Почему все-таки программирование?
Примитивные типы данных в Java
Глубокое изучение типа данных byte в Java
Полный разбор примитивного типа int в Java
Gson: основы сериализации и десериализации
Базовая десериализация и аннотации в Gson
Авторская статья: Самые пугающие три точки кода. Varargs в Java
Полезные статьи и видео:
Идемпотентность и зачем она
Первые шаги в Spring Security с JWT
И посмеяться, тем кто знает английский
Как и всегда, задачи можно найти под тегом - #Tasks, мемы - #Mems
#memory
Вот, какие темы вы предложили к рассмотрению!
Давайте выберем, какую из них рассмотрим подробно?
Давайте выберем, какую из них рассмотрим подробно?
Anonymous Poll
23%
ORM, типы связей и проблемы n+1
37%
паттерны проектирования на java (наверно не все)
17%
хэширование в Java и вопросы с собеседований, связанные с ним
23%
Hashmap и как она работает
Как вам изменения на канале?
Снижение количества постов, изменение тем, новые темы?
Снижение количества постов, изменение тем, новые темы?
Anonymous Poll
88%
Отлично! Лучше чем было! 👍
12%
Да не заметно разницы... ☺️
0%
Все стало только хуже! Админ возвращай взад!😝
Есть мысль собраться завтра в 16:00 по МСК и разобрать написание идеального контроллера 🧑💻
Вы придете?
Вы придете?
Anonymous Poll
48%
Да, тема интересная, я буду! 🙂
29%
Я бы хотел, но занят ☹️
0%
Че там разбирать то? Нафига? 😠
23%
Что это за группа? Где я? 😱
Всем привет! ✌️
Приглашаю всех желающих сегодня собраться в Яндекс.Телемост в 16:00 по МСК!
В этот раз, дошла очередь рассказать о том, как написать контроллер в экосистеме Spring.
Рассмотрим:
- Зачем нам вообще нужны контроллеры
- Какие существуют основные принципы REST при написании контроллеров
- Основные аннотации Spring для написания контроллеров и их настройку
- Все это посмотрим на примере кода
Приходите, будет интересно🧑💻
Как всегда жду всех! 🫡
Приглашаю всех желающих сегодня собраться в Яндекс.Телемост в 16:00 по МСК!
В этот раз, дошла очередь рассказать о том, как написать контроллер в экосистеме Spring.
Рассмотрим:
- Зачем нам вообще нужны контроллеры
- Какие существуют основные принципы REST при написании контроллеров
- Основные аннотации Spring для написания контроллеров и их настройку
- Все это посмотрим на примере кода
Приходите, будет интересно
Как всегда жду всех! 🫡
Please open Telegram to view this post
VIEW IN TELEGRAM
Как заставить себя учиться 🤓
Особенно когда тебе за 30...
Казалось бы - что может быть проще? Бери источник информации и изучай что-то новое. Но оказалось, что не все так просто...
🤬 С чем придется столкнуться:
Постоянные дела и банальная усталость с основной работы (да и лень немножко, конечно🏝 ).
Это хорошо, когда ты молод и у тебя нет обязанностей перед семьей и окружающими. Ты волен посвятить обучению все свое свободное время...
А нам, 30+ -летним "вкатунам", которые вынуждены ежедневно бороться с окружающими проблемами, кажется сложным найти время, чтобы сесть и посмотреть (и воспринять!) видео с какой-то новой концепцией.
А постоянное обучение - вообще какая-то дикость.☠️
Кружащие заблуждения🤔
Не знаю как у Вам, но мне и моему окружению, мысль о том, что за нажимание клавиш, мне будут платить прилично денег - казалась дикой.
Все эти, улыбающиеся лица в ютубе, вещающие о молочном море и кисельных берегах в IT, казались, как минимум мошенниками, отчего учиться у них казалось неправильным...
Кроме того, обычное заблуждение моего круга - что после окончания школы/института, простой человек (а не какой-то там гений или вундеркинд) теряет способности к обучению, и с трудом воспринимает новую, в том числе и сложную информацию. (Не буду скрывать, и я относился к тем людям, кто распространял это заблуждение...☺️ )
Ощущение своей непроходимой тупости🤪
Не покидает и спустя несколько лет.🤣
А если серьезно, то чем больше ты погружаешься в программирование, тем глубже кажется кроличья нора. Новые фреймворки, библиотеки, технологии, нюансы, надстройки и костыли, кажутся дремучим лесом, в котором так легко потеряться.
А периодическое стуканье головы об что-то твердое и последующее (возможно не связанное с этим процессом), озарение, со словами "Ах, б🤬, так вот оно что!", преследует меня до сих пор (ведь обучение тут не заканчивается никогда!🤫 ).
Ниже дам несколько советов, которые помогли мне (и может помогут и Вам😎 )
1. Смог он, смогу и я.
Возможно Вы слышали выражение - "не боги горшки обжигают". Верьте в свои силы, даже если кажется, что это полный идиотизм.
Ведь, если смотря на человека который рассказывает об устройстве сложной системы, Вы задаетесь вопросом "Как он смог это понять?", задайте вопрос и себе "А чем я хуже?".
Бороться и не сдаваться несмотря на все возникающие препятствия сложно. И в обучении это имеет сокровенный смысл. Понимание того, что успешный программист с зп 500к+, не родился с клавиатурой во рту, а так же как и Вы возможно учился по тому же каналу в ютубе, только несколько раньше, максимально мотивирует достичь его успехов.
2. Выбрать время для обучения (и желательно много).
Скажем так, я не смог обучаться параллельно с работой. Ну никак. Поэтому воспользовавшись накоплениями, и освободившимся после увольнения временем, я все силы бросил на учебу.
И не значит, что это ваш рецепт, ведь мы все разные. Возможно вам комфортно вялотекущее обучение и устройство в IT у вас в далекой перспективе.🙃
3. Структурируйте процесс обучения.
Сейчас в интернете гигантское количество обучающего материала. В том числе и бесплатного (да-да, это я про наш канал☺️ ) .
Выберите какой Вам нравится и начинайте учить от простого к сложному. Вычлените в приоритет те части, которые являются основой выбранного Вами рабочего стека и бросьте все силы туда. Иначе можно увязнуть в объеме информации или начать учить то, что Вам никогда не пригодится.
4. Вознаграждайте свое подсознание за успехи
Звучит глупо и странно, знаю. Но мотивировать себя станет в разы легче. Небольшой бонус: чашка любимого кофе, эпизод сериала или пятнадцать минут в соцсетях. Мозг любит вознаграждения, и это ещё один повод не бросить начатое.
5. Чёткая цель и никаких «зачем» после начала.
Наверно моя основная мотивация в ежедневной учебе. А может я просто упрямый🐏 😄 .
Поставьте себе глобально - максимально - реально достижимую цель. Продумайте шаги и ступени до нее, разбив на мелкие подцели и достигая их, начинайте путь к следующей. И не успеете оглянуться как половина пути будет пройдена. А может и весь)))
😎
#motivation
Особенно когда тебе за 30...
Казалось бы - что может быть проще? Бери источник информации и изучай что-то новое. Но оказалось, что не все так просто...
Постоянные дела и банальная усталость с основной работы (да и лень немножко, конечно
Это хорошо, когда ты молод и у тебя нет обязанностей перед семьей и окружающими. Ты волен посвятить обучению все свое свободное время...
А нам, 30+ -летним "вкатунам", которые вынуждены ежедневно бороться с окружающими проблемами, кажется сложным найти время, чтобы сесть и посмотреть (и воспринять!) видео с какой-то новой концепцией.
А постоянное обучение - вообще какая-то дикость.
Кружащие заблуждения
Не знаю как у Вам, но мне и моему окружению, мысль о том, что за нажимание клавиш, мне будут платить прилично денег - казалась дикой.
Все эти, улыбающиеся лица в ютубе, вещающие о молочном море и кисельных берегах в IT, казались, как минимум мошенниками, отчего учиться у них казалось неправильным...
Кроме того, обычное заблуждение моего круга - что после окончания школы/института, простой человек (а не какой-то там гений или вундеркинд) теряет способности к обучению, и с трудом воспринимает новую, в том числе и сложную информацию. (Не буду скрывать, и я относился к тем людям, кто распространял это заблуждение...
Ощущение своей непроходимой тупости
Не покидает и спустя несколько лет.
А если серьезно, то чем больше ты погружаешься в программирование, тем глубже кажется кроличья нора. Новые фреймворки, библиотеки, технологии, нюансы, надстройки и костыли, кажутся дремучим лесом, в котором так легко потеряться.
А периодическое стуканье головы об что-то твердое и последующее (возможно не связанное с этим процессом), озарение, со словами "Ах, б🤬, так вот оно что!", преследует меня до сих пор (ведь обучение тут не заканчивается никогда!
Ниже дам несколько советов, которые помогли мне (и может помогут и Вам
1. Смог он, смогу и я.
Возможно Вы слышали выражение - "не боги горшки обжигают". Верьте в свои силы, даже если кажется, что это полный идиотизм.
Ведь, если смотря на человека который рассказывает об устройстве сложной системы, Вы задаетесь вопросом "Как он смог это понять?", задайте вопрос и себе "А чем я хуже?".
Бороться и не сдаваться несмотря на все возникающие препятствия сложно. И в обучении это имеет сокровенный смысл. Понимание того, что успешный программист с зп 500к+, не родился с клавиатурой во рту, а так же как и Вы возможно учился по тому же каналу в ютубе, только несколько раньше, максимально мотивирует достичь его успехов.
2. Выбрать время для обучения (и желательно много).
Скажем так, я не смог обучаться параллельно с работой. Ну никак. Поэтому воспользовавшись накоплениями, и освободившимся после увольнения временем, я все силы бросил на учебу.
И не значит, что это ваш рецепт, ведь мы все разные. Возможно вам комфортно вялотекущее обучение и устройство в IT у вас в далекой перспективе.
3. Структурируйте процесс обучения.
Сейчас в интернете гигантское количество обучающего материала. В том числе и бесплатного (да-да, это я про наш канал
Выберите какой Вам нравится и начинайте учить от простого к сложному. Вычлените в приоритет те части, которые являются основой выбранного Вами рабочего стека и бросьте все силы туда. Иначе можно увязнуть в объеме информации или начать учить то, что Вам никогда не пригодится.
4. Вознаграждайте свое подсознание за успехи
Звучит глупо и странно, знаю. Но мотивировать себя станет в разы легче. Небольшой бонус: чашка любимого кофе, эпизод сериала или пятнадцать минут в соцсетях. Мозг любит вознаграждения, и это ещё один повод не бросить начатое.
5. Чёткая цель и никаких «зачем» после начала.
Наверно моя основная мотивация в ежедневной учебе. А может я просто упрямый
Поставьте себе глобально - максимально - реально достижимую цель. Продумайте шаги и ступени до нее, разбив на мелкие подцели и достигая их, начинайте путь к следующей. И не успеете оглянуться как половина пути будет пройдена. А может и весь)))
#motivation
Please open Telegram to view this post
VIEW IN TELEGRAM
Продолжаем голосовать за предложенные ранее темы к рассмотрению!
https://t.me/Java_for_beginner_dev/2341
Голосуем, не стесняемся, все анонимно😜
https://t.me/Java_for_beginner_dev/2341
Голосуем, не стесняемся, все анонимно
Please open Telegram to view this post
VIEW IN TELEGRAM
Предложение тем для разбора и публикации! 📖
В комментариях к данному посту предлагайте вопросы, которые вы хотели бы увидеть максимально подробно разобранными в постах, а если будет интересно то и на видео.
Голосование будет проводиться всю неделю, а статья или видео - выходить по выходным.
Примерные правила:
🟢 темы, не выше уровня middle, чтоб был интерес общим.
🟢 Тема должна быть отдельным теоретически-практическим вопросом. Готовый проект - это не тема!
Жду Ваших предложений!👏
В комментариях к данному посту предлагайте вопросы, которые вы хотели бы увидеть максимально подробно разобранными в постах, а если будет интересно то и на видео.
Голосование будет проводиться всю неделю, а статья или видео - выходить по выходным.
Примерные правила:
Жду Ваших предложений!
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Controller's in Spring. Разбираем создание и устройство.
Встреча от 18.05.2025
Запись встречи -
YOUTUBE
RUTUBE
На сегодняшней встрече мы разобрали важную тему в Spring Java - Controller.
Что мы успели:
➡️ Зачем нам вообще нужны контроллеры.
➡️ Какие существуют основные принципы REST при написании контроллеров.
➡️ Основные аннотации Spring для написания контроллеров и их настройку.
➡️ Все это посмотрели на примере кода.
Смотрите, комментируйте, задавайте вопросы! Обязательно подписывайтесь на ютуб и рутюб каналы!!!
Спасибо всем кто пришел, респект 🫡
Встреча от 18.05.2025
Запись встречи -
YOUTUBE
RUTUBE
На сегодняшней встрече мы разобрали важную тему в Spring Java - Controller.
Что мы успели:
Смотрите, комментируйте, задавайте вопросы! Обязательно подписывайтесь на ютуб и рутюб каналы!!!
Спасибо всем кто пришел, респект 🫡
Please open Telegram to view this post
VIEW IN TELEGRAM