Pular para o conteúdo
Skillpedia
APIs e servidores (backend)40 mil · #5208

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

https://github.com/github/awesome-copilot/blob/main/skills/kotlin-springboot/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/github/awesome-copilot/blob/main/skills/kotlin-springboot/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
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-springboot

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/github/awesome-copilot/main/skills/kotlin-springboot/SKILL.md -o SKILL.md
Conteú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-plugin ou org.jetbrains.kotlin.jvm).
  • Plugins Kotlin: Para JPA, habilite o plugin kotlin-jpa para tornar automaticamente as classes de entidade open sem 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 val no construtor primário. Prefira val em vez de var em todos os lugares para promover a imutabilidade.
  • Estereótipos de Componente: Use as anotações @Service, @Repository e @RestController assim como faria em Java.

Configuração

  • Configuração Externalizada: Use application.yml pela sua legibilidade e estrutura hierárquica.
  • Propriedades Type-Safe: Use @ConfigurationProperties com data class para 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 class do Kotlin para todos os DTOs. Isso fornece equals(), hashCode(), toString() e copy() 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 @ControllerAdvice e @ExceptionHandler para 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 @Transactional em 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 compilador kotlin-jpa para 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 JpaRepository ou CrudRepository.
  • 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 @WebMvcTest ou @DataJpaTest para 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ções suspend em seus controllers e services. O Spring Boot tem excelente suporte para coroutines.
  • Structured Concurrency: Use coroutineScope ou supervisorScope para 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

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas