
Статистика канала
record - только для хранения данных.
Но на практике это полноценный тип, в котором можно добавить бизнес-логику.
Что можно внутри record:
* конструкторы с валидацией
* instance-методы
* static-методы
* фабричные методы
* нормализацию данных
Пример реального использования:
public record Email(String address) {
// Валидация при создании
public Email {
if (address == null || !address.matches("^[\\w-.]+@[\\w-]+\\.[\\w]{2,4}$")) {
throw new IllegalArgumentException("Invalid email: " + address);
}
}
// Бизнес-логика
public String domain() {
return address.substring(address.indexOf("@") + 1);
}
// Фабричный метод
public static Email from(String raw) {
return new Email(raw.trim().toLowerCase());
}
}
{}
Почему это мощно:
* неизменяемость по умолчанию
* вся логика рядом с данными
* меньше boilerplate
* безопасное создание объектов
* идеальный формат для Value Objects (DDD)
Record - это не “структура”.
Это компактный способ писать чистые доменные модели.
Если используешь records только как DTO, ты используешь их на 50%.
<exclusion>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-websocket</artifactId>
</exclusion>{}
@AutoConfigureMockMvc автоматически настраивает MockMvc в тестовом контексте и позволяет отправлять HTTP-запросы напрямую через Spring.
@SpringBootTest
@AutoConfigureMockMvc
class UserControllerTest {
@Autowired
private MockMvc mockMvc;
@Test
void shouldReturnUser() throws Exception {
mockMvc.perform(get("/users/1"))
.andExpect(status().isOk())
.andExpect(jsonPath("$.id").value(1));
}
}
{}
Что происходит под капотом:
- @SpringBootTest поднимает полный контекст приложения
- @AutoConfigureMockMvc настраивает MockMvc
- Tomcat не запускается
- Запросы проходят через DispatcherServlet внутри приложения
Результат:
- тесты работают быстрее
- нет сетевых накладных расходов
- проверяется реальный Spring pipeline
Идеальный вариант для быстрых и надёжных controller-тестов.record, final поля и неизменяемые коллекции.
✅ 2) Общайся через сообщения, а не через общую память
Вместо того чтобы менять общий объект - передавай события через очередь:
- BlockingQueue
- ConcurrentLinkedQueue
- Actor-style подход
Это снижает связанность и делает поведение системы предсказуемым.
Простой принцип:
Не “разделяй память”, а “разделяй сообщения”.
#Java #SoftwareDevelopmentnull поля в JSON
Если ваш API отдаёт JSON и там постоянно летят поля вида:
"phone": null,
"email": null
{}
это:
- засоряет ответы
- увеличивает трафик
- мешает фронту (лишние проверки)
Решение - сказать Jackson: не сериализовать null-поля.
Достаточно добавить аннотацию на DTO:
✅ @JsonInclude(JsonInclude.Include.NON_NULL)
После этого все поля со значением null автоматически исчезнут из JSON-ответа.
Плюс: это особенно удобно для PATCH/частичных ответов.server:
shutdown: graceful
spring:
lifecycle:
timeout-per-shutdown-phase: 20s
Идеально для продакшена, особенно если у тебя:
- Kubernetes rolling update
- долгие запросы
- async обработчики / очереди
- фоновые задачиОтзывы канала
всего 7 отзывов
- Добавлен: Сначала новые
- Добавлен: Сначала старые
- Оценка: По убыванию
- Оценка: По возрастанию
Каталог Телеграм-каналов для нативных размещений
Java — это Telegam канал в категории «Интернет технологии», который предлагает эффективные форматы для размещения рекламных постов в Телеграмме. Количество подписчиков канала в 17.3K и качественный контент помогают брендам привлекать внимание аудитории и увеличивать охват. Рейтинг канала составляет 11.8, количество отзывов – 7, со средней оценкой 5.0.
Вы можете запустить рекламную кампанию через сервис Telega.in, выбрав удобный формат размещения. Платформа обеспечивает прозрачные условия сотрудничества и предоставляет детальную аналитику. Стоимость размещения составляет 9650.34 ₽, а за 118 выполненных заявок канал зарекомендовал себя как надежный партнер для рекламы в TG. Размещайте интеграции уже сегодня и привлекайте новых клиентов вместе с Telega.in!
Вы снова сможете добавить каналы в корзину из каталога
Комментарий