java-springbootOfficialJava Spring Boot GitHub Copilot
github/awesome-copilot
Java Spring Boot GitHub.
Установка
npx -y skills add github/awesome-copilot --skill java-springboot --agent claude-codeSpring Boot — лучшие практики
Цель — помочь писать качественные приложения на Spring Boot, следуя устоявшимся лучшим практикам.
Настройка и структура проекта
- Инструмент сборки: используйте Maven (
pom.xml) или Gradle (build.gradle) для управления зависимостями. - Стартеры: используйте стартеры Spring Boot (например,
spring-boot-starter-web,spring-boot-starter-data-jpa) для упрощения зависимостей. - Структура пакетов: организуйте код по фиче/домену (
com.example.app.order,com.example.app.user), а не по слою (com.example.app.controller,com.example.app.service).
Внедрение зависимостей и компоненты
- Constructor Injection: всегда используйте внедрение через конструктор для обязательных зависимостей. Это упрощает тестирование и делает зависимости явными.
- Неизменяемость: объявляйте поля зависимостей как
private final. - Стереотипы компонентов: используйте аннотации
@Component,@Service,@Repositoryи@Controller/@RestControllerпо назначению.
Конфигурация
- Вынесенная конфигурация: используйте
application.yml(илиapplication.properties). YAML часто предпочтительнее за читаемость и иерархичность. - Типобезопасные свойства: используйте
@ConfigurationPropertiesдля привязки конфигурации к строго типизированным Java-объектам. - Профили: используйте Spring Profiles (
application-dev.yml,application-prod.yml) для конфигураций под окружения. - Управление секретами: не хардкодьте секреты. Используйте переменные окружения или инструмент вроде HashiCorp Vault или AWS Secrets Manager.
Веб-слой (контроллеры)
- RESTful API: проектируйте ясные и согласованные REST-эндпойнты.
- DTO: используйте DTO для выдачи и приёма данных в слое API. Не выставляйте JPA-сущности напрямую клиенту.
- Валидация: используйте Java Bean Validation (JSR 380) с аннотациями (
@Valid,@NotNull,@Size) на DTO для валидации запросов. - Обработка ошибок: реализуйте глобальный обработчик через
@ControllerAdviceи@ExceptionHandlerдля согласованных ответов об ошибках.
Сервисный слой
- Бизнес-логика: инкапсулируйте всю бизнес-логику в классах
@Service. - Без состояния: сервисы должны быть stateless.
- Управление транзакциями: используйте
@Transactionalна методах сервиса для декларативного управления транзакциями. Применяйте на минимально необходимом уровне.
Слой данных (репозитории)
- Spring Data JPA: используйте репозитории Spring Data JPA, наследуя
JpaRepositoryилиCrudRepositoryдля стандартных операций. - Кастомные запросы: для сложных запросов используйте
@Queryили JPA Criteria API. - Проекции: используйте DTO-проекции, чтобы извлекать из БД только нужные данные.
Логирование
- SLF4J: используйте API SLF4J.
- Объявление логгера:
private static final Logger logger = LoggerFactory.getLogger(MyClass.class); - Параметризованное логирование: используйте параметризованные сообщения (
logger.info("Processing user {}...", userId);) вместо конкатенации строк ради производительности.
Тестирование
- Юнит-тесты: пишите для сервисов и компонентов на JUnit 5 и мок-фреймворке вроде Mockito.
- Интеграционные тесты: используйте
@SpringBootTestдля тестов, загружающих контекст приложения Spring. - Срезы тестов: используйте аннотации срезов вроде
@WebMvcTest(контроллеры) или@DataJpaTest(репозитории) для изолированного теста частей приложения. - Testcontainers: рассмотрите Testcontainers для надёжных интеграционных тестов с реальными БД, брокерами сообщений и т.д.
Безопасность
- Spring Security: используйте для аутентификации и авторизации.
- Кодирование паролей: всегда кодируйте пароли сильным алгоритмом хеширования вроде BCrypt.
- Санитизация ввода: предотвращайте SQL-инъекции через Spring Data JPA или параметризованные запросы. Предотвращайте XSS правильным кодированием вывода.
Из того же репозитория
git-commitOfficial — git коммит GitHub Copilot
github/awesome-copilot
Git коммит.
gh-cliOfficial — GitHub CLI Awesome Copilot
github/awesome-copilot
GitHub CLI.
excalidraw-diagram-generatorOfficial — генератор диаграмм Excalidraw GitHub
github/awesome-copilot
Генератор диаграмм Excalidraw.
documentation-writerOfficial — писатель документации GitHub Copilot
github/awesome-copilot
Писатель документации.
prdOfficial — PRD GitHub Copilot
github/awesome-copilot
Документ требований к продукту.
refactorOfficial — рефакторинг GitHub Copilot
github/awesome-copilot
Рефакторинг.
