Skip to content

mateuslh/spec-mateuslh

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 

Repository files navigation

🛡️ specification-mateuslh

Uma biblioteca utilitária para facilitar a criação de Specifications e Builders com validação no estilo Fluent Interface. Inspirada em conceitos de DDD (Domain-Driven Design), TDD (Test-Driven Development) e padrões avançados de validação de regras de negócio.

Ideal para projetos que exigem validações robustas e reutilizáveis, mantendo o código limpo, coeso e altamente testável.


✨ Principais Funcionalidades

✅ Abstração para criação de Builders com validação opcional
✅ Exceção customizada para validações
✅ Estrutura base para Specifications reutilizáveis


🛠️ Instalação

1. Adicione o repositório do Jitpack ao seu pom.xml:

<repositories>
    <repository>
        <id>jitpack.io</id>
        <url>https://jitpack.io</url>
    </repository>
</repositories>

2. Adicione a dependência (após build manual no Jitpack):

<dependency>
    <groupId>com.github.Mateuslh</groupId>
    <artifactId>spec-mateuslh</artifactId>
    <version>1.0.1</version>
</dependency>

🔗 Acesse: https://jitpack.io/#Mateuslh/spec-mateuslh
➡️ Clique em Look up > Get it para gerar o build da versão desejada.


🚀 Exemplo Prático

📦 Entidade Produtor com Builder e Specification

// Código da entidade Produtor omitido para brevidade

✅ Validações com ProdutorSpecification

// Código da Specification omitido para brevidade

🔨 Exemplo de Utilização (Build com Validação)

GeometryFactory geometryFactory = new GeometryFactory();
Point localizacao = geometryFactory.createPoint(new Coordinate(-47.0, -14.0)); // Fora da área permitida

Produtor produtor = new Produtor.Builder(null)
    .nome("Fazenda Fora da Área")
    .localizacao(localizacao)
    .build(); // Lança ValidationException

📚 Casos de Uso Recomendados

  • Validação de regras de negócio antes de persistir entidades.
  • Criação de Builders com enforce de invariantes.
  • Projetos orientados a DDD onde Specifications centralizam regras.

📝 Licença

Este projeto está licenciado sob a MIT License.


📬 Contato

Desenvolvido com 💻 por Mateus Leal Hemkemeier
🔗 LinkedIn
📧 seuemail@example.com


⭐ Se você gostou deste projeto, deixe uma estrela no GitHub!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages