
Разработка бэкенда требует много повторяющегося шаблонного кода для обеспечения базовой функциональности. Это может замедлять разработку.
Claude Code работает непосредственно с кодовой базой, редактирует файлы и выполняет команды внутри рабочего процесса разработки.
Claude Code — это агент-помощник по написанию кода, который может читать репозиторий, вносить изменения и интегрироваться с вашими инструментами в терминале, IDE, десктопном приложении и в браузере.
Claude Code полезен для задач бэкенда, которые охватывают несколько уровней. Он может помочь с реализацией, исправлением ошибок, рефакторингом, тестированием, подготовкой релизов и рабочими процессами проверки кода.
Для разработки бэкенда это очень важно. REST-эндпоинт может включать контроллер, сервис, репозиторий, правила валидации, DTO и тесты. Claude Code может работать с этими файлами и согласовывать изменения.
Установка и настройка Claude Code
Прежде чем устанавливать Claude Code, убедитесь, что у вас есть следующее:
- Node.js 18+ (настоятельно рекомендуется LTS-версия).
- macOS 10.15+, Ubuntu 20.04+/Debian 10+ или Windows 10+ с WSL.
- Не менее 4 ГБ ОЗУ.
- Платная подписка Claude.ai (Pro, Max5 или Max20) или API-ключ Anthropic.
Установка Claude Code
npm install -g @anthropic-ai/claude-code
После установки команда claude запускает процесс аутентификации через браузер. Если вы предпочитаете использовать API-ключ напрямую, просто установите переменную среды:
export ANTHROPIC_API_KEY=your_api_key_here
Самый простой способ запустить Claude Code — перейти в корень вашего проекта и выполнить команду:
claude
Если нужно выполнить однострочную команду и получить ответ без запуска полноценной сессии, можно использовать флаг -p (print):
claude -p "Explain what this Spring Boot service does"
Это отлично подходит для быстрого поиска или передачи вывода из других инструментов:
cat error.log | claude -p "Analyse the root cause of these errors"
Важные команды Claude Code
Команды оболочки (вне сессии)
Это команды, которые мы выполняем в терминале до или после сессии Claude Code
| Команда | Что она делает |
| claude | Запуск интерактивного режима |
| claude -p «ваш запрос» | Выполнение однократного запроса, без интерактивной сессии |
| claude —model claude-opus-4-6 | Использование конкретной модели |
| claude auth login | Аутентификация |
| claude auth logout | Выход из системы |
| claude auth status | Проверка статуса аутентификации |
| claude config list | Просмотр текущей конфигурации |
| claude config set theme dark | Изменение настройки конфигурации |
| claude mcp add <имя> | Добавление интеграции MCP-сервера |
| claude mcp list | Список подключенных MCP-серверов |
| claude mcp remove <имя> | Удаление MCP-сервера |
Слэш-команды (внутри сессии)
Когда мы находимся внутри активной сессии Claude Code, эти слэш-команды дают нам контроль над поведением.
| Команда | Что она делает |
| /help | Показать все доступные команды |
| /clear | Очистить историю диалога |
| /compact | Сжать и обобщить контекст (полезно в длительных сессиях) |
| /cost | Показать количество использованных токенов |
| /doctor | Диагностировать проблемы конфигурации |
| /init | Создать файл конфигурации проекта CLAUDE.md |
| /review | Начать проверку кода текущих изменений |
| /todos | Показать все задачи (TODO), которые отслеживает Claude |
| /rewind | Вернуться к предыдущей контрольной точке в сессии |
| /add-dir | Добавить другую директорию в контекст текущей сессии |
| /permissions | Просмотреть и обновить разрешения инструментов |
| /bashes | Проверить фоновые выполняющиеся процессы |
| /kill <id> | Остановить конкретный фоновый процесс |
| /statusline | Настроить отображение статуса в реальном времени для фоновых задач |
По умолчанию Claude Code осуществляет чтение из текущего рабочего каталога. Но для микросервисного проекта на Spring Boot у нас может быть несколько репозиториев или монорепозиторий с отдельными модулями. Мы можем расширить область видимости Claude с помощью переменной add-dir:
claude --add-dir ../user-service --add-dir ../payment-service
Это очень полезно, когда вы работаете над изменением, затрагивающим несколько сервисов, и хотите, чтобы Claude понимал, как они связаны друг с другом.
Настройка CLAUDE.md для проекта
Одна из удобств этого инструмента заключается в том, что мы можем на раннем этапе запустить /init внутри проекта. Это создает файл CLAUDE.md — простую Markdown-конфигурацию, которая описывает структуру проекта, принятые соглашения и любые особенности, о которых следует знать.
Вот пример CLAUDE.md для микросервиса на Spring Boot 3:
# Проект: сервис заказов
## Технологический стек
- Java 24
- Spring Boot 3.4
- Maven
- PostgreSQL (via Spring Data JPA)
- Kafka for async messaging
## Соглашения
- Use records for DTOs
- Always add `@Transactional` on service methods that write to the DB
- Use `@RestControllerAdvice` for global exception handling
- Package structure: controller → service → repository → domain
## Тестирование
- Unit tests: JUnit 5 + Mockito
- Integration tests: Testcontainers
- Run tests: `mvn test`
- Run integration tests: `mvn verify`
## Ключевые файлы
- `src/main/resources/application.yml` – main config
- `docker-compose.yml` – local dev environment
## Примечания
- Do NOT use Lombok — we moved away from it
- Java text blocks are preferred for multi-line strings
Claude читает этот файл в начале каждой сессии. По сути, это краткий документ, который избавляет нас от необходимости каждый раз объяснять контекст заново.
Реальные примеры рабочих процессов для Java и Spring Boot
1. Генерация REST-эндпоинта с нуля
Допустим, нам нужен новый эндпоинт для сервиса заказов. Мы можем описать его так:
Создай эндпоинт POST /orders в Spring Boot 3.4.
Тело запроса должно содержать customerId, items (список productId и quantity) и shippingAddress.
Верни созданный заказ со статусом 201. Используй Java records для DTO и следуй структуре пакетов из CLAUDE.md.
Claude сгенерирует контроллер, сервис, репозиторий, доменную модель и DTO.
Пример сгенерированного кода:
DTO
public record CreateOrderRequest(
Long customerId,
List<OrderItemRequest> items,
String shippingAddress
) {}
public record OrderItemRequest(
Long productId,
int quantity
) {}
public record OrderResponse(
Long orderId,
Long customerId,
List<OrderItemRequest> items,
String shippingAddress,
OrderStatus status,
Instant createdAt
) {}
Контроллер
@RestController
@RequestMapping("/orders")
public class OrderController {
private final OrderService orderService;
public OrderController(OrderService orderService) {
this.orderService = orderService;
}
@PostMapping
public ResponseEntity<OrderResponse> createOrder(
@RequestBody @Valid CreateOrderRequest request) {
OrderResponse response = orderService.createOrder(request);
return ResponseEntity.status(HttpStatus.CREATED).body(response);
}
}
2. Написание тестов для существующего кода
Мы можем попросить Claude написать тесты:
Напиши модульные тесты для OrderService.
Используй JUnit 5 и Mockito.
Учитывай при этом "счастливый" путь, пустой список товаров и сценарии, когда клиент не найден.
Claude прочитает фактический файл OrderService.java, поймет, что он делает, и сгенерирует осмысленные тесты.
@ExtendWith(MockitoExtension.class)
class OrderServiceTest {
@Mock
private OrderRepository orderRepository;
@Mock
private CustomerRepository customerRepository;
@InjectMocks
private OrderService orderService;
@Test
void createOrder_validRequest_returnsCreatedOrder() {
var customerId = 1L;
var request = new CreateOrderRequest(
customerId,
List.of(new OrderItemRequest(10L, 2)),
"123 Main St"
);
when(customerRepository.findById(customerId))
.thenReturn(Optional.of(new Customer(customerId, "John Doe")));
when(orderRepository.save(any())).thenAnswer(inv -> inv.getArgument(0));
var response = orderService.createOrder(request);
assertThat(response.customerId()).isEqualTo(customerId);
assertThat(response.status()).isEqualTo(OrderStatus.PENDING);
}
@Test
void createOrder_customerNotFound_throwsException() {
var request = new CreateOrderRequest(99L, List.of(), "123 Main St");
when(customerRepository.findById(99L)).thenReturn(Optional.empty());
assertThatThrownBy(() -> orderService.createOrder(request))
.isInstanceOf(CustomerNotFoundException.class);
}
}
3. Отладка по логу ошибок
cat logs/application.log | claude -p "Identify the root cause of this error and suggest a fix"
Или, если мы уже находимся в сессии и только что увидели ошибку в терминале, можем напрямую сослаться на файл:
Посмотри на logs/application.log и объясни, почему Kafka consumer выбрасывает
SerializationException для OrderCreatedEvent
4. Рефакторинг в нескольких файлах
Одна из полезных особенностей Claude Code — его способность выполнять рефакторинг во всей кодовой базе одновременно:
Переименуй класс OrderEntity в Order во всей кодовой базе.
Обнови все импорты, JPA-аннотации и интерфейсы репозиториев.
5. Генерация API-документации
Прочитай OrderController.java и сгенерируй спецификацию OpenAPI 3.0 для всех эндпоинтов.
Сохрани ее как src/main/resources/api-docs/orders.yaml.
6. Запуск сервисов в фоновом режиме
Запусти Spring Boot приложение в фоновом режиме с помощью mvn spring-boot:run.
Запусти Kafka consumer в фоновом режиме.
Запусти тесты в режиме наблюдения (watch mode) в фоновом режиме.
Claude Code работает лучше всего, когда мы используем его как напарника по программированию, а не как замену инженерному мышлению. Все равно нужно думать о том, что мы создаем. Все равно нужно проверять то, что он генерирует. Но он берет на себя скучную работу.
Читайте также:
- Claude Code: возможность персонального и командного развития
- Кто на самом деле серфит в интернете — вы или ваш браузер?
- Как я использую Claude Code в 2026 году и почему ему все еще нужен родитель
Читайте нас в Telegram, VK и Дзен
Перевод статьи Saquib Aftab: How to use Claude Code for Backend Software Development?





