kotlin-springboot
Orienta seu agente no desenvolvimento de aplicações com Spring Boot e Kotlin, seguindo as melhores práticas. Ajuda a criar aplicações eficientes e bem estruturadas.
O que ela faz
Este guia ensina como criar aplicativos usando as linguagens Kotlin e Spring Boot, seguindo as melhores práticas. Ele cobre desde a configuração inicial até detalhes de código, como injeção de dependência e tratamento de erros.
Quando usar
- ✓Ao iniciar um novo projeto com Kotlin e Spring Boot.
- ✓Ao refatorar um projeto existente para melhorar a qualidade.
- ✓Ao ter dúvidas sobre como implementar uma funcionalidade específica.
Exemplo do que pedir para a IA
“Como configuro meu projeto Spring Boot com Kotlin para usar injeção de dependência de forma idiomática?”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
A IA usa as informações do documento para sugerir as melhores formas de escrever seu código. Ela foca em usar recursos do Kotlin, como construtores primários e classes de dados, para tornar o código mais limpo e eficiente.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add github/awesome-copilot --skill kotlin-springbootOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/github/awesome-copilot/main/skills/kotlin-springboot/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Spring Boot com Kotlin: Melhores Práticas
Seu objetivo é me ajudar a escrever aplicações Spring Boot de alta qualidade e idiomáticas usando Kotlin.
Configuração e Estrutura do Projeto
- Ferramenta de Build: Use Maven (
pom.xml) ou Gradle (build.gradle) com os plugins Kotlin (kotlin-maven-pluginouorg.jetbrains.kotlin.jvm). - Plugins Kotlin: Para JPA, habilite o plugin
kotlin-jpapara tornar automaticamente as classes de entidadeopensem código repetitivo. - Starters: Use os starters do Spring Boot (ex:
spring-boot-starter-web,spring-boot-starter-data-jpa) como de costume. - Estrutura de Pacotes: Organize o código por funcionalidade/domínio (ex:
com.example.app.order,com.example.app.user) em vez de por camada.
Injeção de Dependência e Componentes
- Construtores Primários: Sempre use o construtor primário para injeção de dependência obrigatória. É a abordagem mais idiomática e concisa em Kotlin.
- Imutabilidade: Declare dependências como
private valno construtor primário. Prefiravalem vez devarem todos os lugares para promover a imutabilidade. - Estereótipos de Componente: Use as anotações
@Service,@Repositorye@RestControllerassim como faria em Java.
Configuração
- Configuração Externalizada: Use
application.ymlpela sua legibilidade e estrutura hierárquica. - Propriedades Type-Safe: Use
@ConfigurationPropertiescomdata classpara criar objetos de configuração imutáveis e type-safe. - Perfis: Use Perfis Spring (
application-dev.yml,application-prod.yml) para gerenciar configurações específicas do ambiente. - Gerenciamento de Segredos: Nunca codifique segredos diretamente. Use variáveis de ambiente ou uma ferramenta dedicada de gerenciamento de segredos como HashiCorp Vault ou AWS Secrets Manager.
Camada Web (Controllers)
- APIs RESTful: Projete endpoints RESTful claros e consistentes.
- Data Classes para DTOs: Use as
data classdo Kotlin para todos os DTOs. Isso forneceequals(),hashCode(),toString()ecopy()gratuitamente e promove a imutabilidade. - Validação: Use Java Bean Validation (JSR 380) com anotações (
@Valid,@NotNull,@Size) em suas data classes DTO. - Tratamento de Erros: Implemente um manipulador de exceções global usando
@ControllerAdvicee@ExceptionHandlerpara respostas de erro consistentes.
Camada de Serviço
- Lógica de Negócios: Encapsule a lógica de negócios dentro de classes
@Service. - Statelessness: Serviços devem ser stateless.
- Gerenciamento de Transações: Use
@Transactionalem métodos de serviço. Em Kotlin, isso pode ser aplicado no nível da classe ou da função.
Camada de Dados (Repositories)
- Entidades JPA: Defina entidades como classes. Lembre-se que elas devem ser
open. É altamente recomendado usar o plugin compiladorkotlin-jpapara lidar com isso automaticamente. - Null Safety: Aproveite a null-safety do Kotlin (
?) para definir claramente quais campos de entidade são opcionais ou obrigatórios no nível do tipo. - Spring Data JPA: Use repositórios Spring Data JPA estendendo
JpaRepositoryouCrudRepository. - Coroutines: Para aplicações reativas, aproveite o suporte do Spring Boot para Kotlin Coroutines na camada de dados.
Logging
- Logger de Companion Object: A maneira idiomática de declarar um logger é em um companion object.
companion object { private val logger = LoggerFactory.getLogger(MyClass::class.java) } - Logging Parametrizado: Use mensagens parametrizadas (
logger.info("Processing user {}...", userId)) para desempenho e clareza.
Testes
- JUnit 5: JUnit 5 é o padrão e funciona perfeitamente com Kotlin.
- Bibliotecas de Teste Idiomáticas: Para testes mais fluentes e idiomáticos, considere usar Kotest para asserções e MockK para mocking. Eles são projetados para Kotlin e oferecem uma sintaxe mais expressiva.
- Test Slices: Use anotações de test slice como
@WebMvcTestou@DataJpaTestpara testar partes específicas da aplicação. - Testcontainers: Use Testcontainers para testes de integração confiáveis com bancos de dados reais, message brokers, etc.
Coroutines e Programação Assíncrona
- Funções
suspend: Para código assíncrono não bloqueante, use funçõessuspendem seus controllers e services. O Spring Boot tem excelente suporte para coroutines. - Structured Concurrency: Use
coroutineScopeousupervisorScopepara gerenciar o ciclo de vida das coroutines.
Perguntas frequentes
O que são 'starters' do Spring Boot?
São pacotes pré-configurados que facilitam a adição de funcionalidades comuns ao seu projeto, como suporte a web ou acesso a banco de dados.
Por que usar `application.yml` em vez de `.properties`?
O formato YAML é mais legível e permite uma estrutura hierárquica mais clara para as configurações.
O que significa 'imutabilidade'?
Significa que um valor, uma vez definido, não pode ser alterado. Isso ajuda a evitar erros em programas complexos.
Detalhes
Descrição original do autor
Get best practices for developing applications with Spring Boot and Kotlin.
repo: github/awesome-copilot
Popularidade
- Estrelas no GitHub
- 40 mil
- Posição no ranking
- #5208
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
acquire-codebase-knowledge
Ajuda seu agente a entender e documentar um projeto de código existente. É útil para novas pessoas entrarem no projeto ou para ter uma visão geral da arquitetura.
github/awesome-copilot
acreadiness-assess
Faz seu agente avaliar a prontidão de um projeto para IA e gerar um relatório. É útil para entender o quão bem um projeto está preparado para usar ferramentas de IA.
github/awesome-copilot
acreadiness-generate-instructions
Ajuda seu agente a criar instruções para ferramentas de IA baseadas em uma avaliação. É útil para melhorar a forma como a IA interage com o código e fecha lacunas identificadas.
github/awesome-copilot
acreadiness-policy
Faz seu agente ajudar a definir ou aplicar políticas para avaliação de projetos de IA. É útil para padronizar a forma como os projetos são avaliados e garantir conformidade.
github/awesome-copilot
Skills parecidas
api-connector-builder
Faz seu agente construir novas conexões com APIs seguindo o padrão já existente. Use quando precisar adicionar mais uma integração sem criar um novo jeito de fazer.
affaan-m/ECC
api-design
Ajuda seu agente a projetar APIs REST seguindo as melhores práticas. É útil para definir como as APIs se comunicam, como os erros são mostrados e como organizar os dados.
affaan-m/ECC
backend-patterns
Ajuda seu agente com padrões de arquitetura do lado do servidor e otimização de banco de dados. É útil para construir ou revisar o código que roda no servidor.
affaan-m/ECC