Skip to content

Instantly share code, notes, and snippets.

@godrix
Created January 4, 2026 16:52
Show Gist options
  • Select an option

  • Save godrix/f5cb630f9b1933b9d99e957192d80689 to your computer and use it in GitHub Desktop.

Select an option

Save godrix/f5cb630f9b1933b9d99e957192d80689 to your computer and use it in GitHub Desktop.
CursorToys: Prompt - add_version_header_springboot (2026-01-04)
{
"cursortoys": {
"version": "1.2.0",
"type": "prompt",
"created": "2026-01-04T16:52:18.190Z",
"fileCount": 1,
"files": [
{
"name": "add_version_header_springboot.md",
"type": "prompt",
"size": 3691
}
]
}
}

Adicionar Header de Versão com VersionHeaderFilter no Spring Boot

Prompt para assistente de IA

Você é um especialista em Spring Boot e arquitetura de APIs REST. Sua tarefa é implementar um filtro HTTP que adicione automaticamente o header "x-Api-Version" em todas as respostas HTTP da aplicação, contendo a versão do projeto obtida do BuildProperties do Spring Boot.

CONTEXTO DO PROJETO:

  • Projeto Spring Boot (versão 2.x ou 3.x)
  • Build tool: Maven
  • Java 11 ou superior
  • Arquitetura: seguir padrões do projeto existente

OBJETIVO: Criar um filtro HTTP que intercepte todas as requisições e adicione o header "x-Api-Version" na resposta, contendo a versão do projeto definida no pom.xml.

REQUISITOS TÉCNICOS:

  1. CONFIGURAÇÃO DO MAVEN:

    • Configurar o plugin spring-boot-maven-plugin com o goal "build-info" para gerar BuildProperties automaticamente
    • A versão deve ser obtida da tag do pom.xml
  2. ESTRUTURA DE CÓDIGO:

    • Criar classe VersionHeaderFilter no pacote config
    • A classe deve estender OncePerRequestFilter do Spring
    • Deve ser anotada com @Component para registro automático
    • Deve injetar BuildProperties via construtor
    • Deve adicionar o header "x-Api-Version" em todas as respostas HTTP
  3. CONSTANTES:

    • Criar ou atualizar classe Constants com a constante X_API_VERSION = "x-Api-Version"
    • Usar a constante no filtro ao invés de string hardcoded
  4. COMPATIBILIDADE:

    • Se Spring Boot 2.x: usar javax.servlet.*
    • Se Spring Boot 3.x: usar jakarta.servlet.*
    • Detectar automaticamente a versão do Spring Boot do projeto
  5. TESTES:

    • Criar teste unitário para o VersionHeaderFilter
    • Testar que o header é adicionado corretamente
    • Testar que o valor do header corresponde à versão do BuildProperties
    • Usar Mockito para mocks

INSTRUÇÕES DE IMPLEMENTAÇÃO:

  1. Analisar o pom.xml do projeto:

    • Verificar se spring-boot-maven-plugin está configurado
    • Adicionar/atualizar configuração do plugin com goal build-info
    • Verificar se a tag está definida
  2. Verificar estrutura de pacotes:

    • Identificar onde ficam as classes de configuração (geralmente em config/)
    • Identificar onde ficam as constantes (geralmente em util/ ou domain/util/)
  3. Criar/atualizar Constants:

    • Adicionar constante X_API_VERSION se não existir
    • Manter padrão de nomenclatura do projeto
  4. Criar VersionHeaderFilter:

    • Localização: src/main/java/[pacote]/config/VersionHeaderFilter.java
    • Implementar doFilterInternal adicionando o header na resposta
    • Garantir que o filtro não bloqueia o fluxo (chamar filterChain.doFilter)
  5. Criar teste unitário:

    • Localização: src/test/java/[pacote]/config/VersionHeaderFilterTest.java
    • Usar @ExtendWith(MockitoExtension.class)
    • Mockar BuildProperties, HttpServletRequest, HttpServletResponse e FilterChain
    • Verificar que addHeader foi chamado com os parâmetros corretos

VALIDAÇÃO:

  • O filtro deve ser registrado automaticamente pelo Spring (via @Component)
  • O header deve aparecer em TODAS as respostas HTTP (sucesso, erro, etc.)
  • O valor do header deve corresponder à versão do pom.xml
  • O código deve seguir os padrões e convenções do projeto existente
  • Os testes devem passar

ENTREGÁVEIS:

  1. Atualização do pom.xml (se necessário)
  2. Classe Constants atualizada ou criada
  3. Classe VersionHeaderFilter implementada
  4. Classe VersionHeaderFilterTest implementada
  5. Instruções de como testar manualmente

IMPORTANTE:

  • Não modificar código existente desnecessariamente
  • Seguir padrões de nomenclatura e estrutura do projeto
  • Garantir que não há breaking changes
  • Documentar qualquer decisão arquitetural importante
@mohmmeed
Copy link

<script src="https://gist.github.com/godrix/f5cb630f9b1933b9d99e957192d80689.js"></script>

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment