Documentation

Krizaka Java

The Spring Boot building blocks of every Krizaka service — one build, four modules, four starters.

The cross-cutting code every Spring Boot service writes — security, error format, messaging, observability — written once in the Krizaka Platform Kit, with its invariants tested on a real PostgreSQL and RabbitMQ. Everything is published on Maven Central under com.krizaka (Apache-2.0) and requires Java 21 and Spring Boot 4.0.

Start with the BOM and the starters

pom.xml
<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>com.krizaka</groupId>
      <artifactId>krizaka-bom</artifactId>
      <version>0.1.0</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

<dependencies>
  <dependency>
    <groupId>com.krizaka</groupId>
    <artifactId>krizaka-spring-boot-starter-web</artifactId>
  </dependency>
  <dependency>
    <groupId>com.krizaka</groupId>
    <artifactId>krizaka-spring-boot-starter-observability</artifactId>
  </dependency>
</dependencies>

A starter is a POM: the kit module and the Spring Boot starters the capability needs. A product declares capabilities, never the Spring list behind them.

StarterBrings
krizaka-spring-boot-starter-webkrizaka-web + Spring MVC, validation, actuator
krizaka-spring-boot-starter-securitykrizaka-security + Spring Security, OAuth2 resource server
krizaka-spring-boot-starter-rabbitmqkrizaka-messaging + AMQP, JDBC, Jackson (add your JDBC driver)
krizaka-spring-boot-starter-observabilitykrizaka-observability + actuator, OpenTelemetry tracing, Prometheus

A whole service configuration

Everything else is a kit default you can override:

application.yml
spring:
  application.name: orders-service
  datasource.url: ${DATABASE_URL}
  rabbitmq.addresses: ${RABBITMQ_URL}
krizaka:
  observability: { product: acme, service: orders, version: "@project.version@" }
  security.jwt.secret: ${KRIZAKA_JWT_SECRET}
  messaging:
    exchanges: { events: acme.events, dead-letter: acme.dlx }
    dedup.store: jdbc
    outbox.enabled: true
  web.cors.allowed-origins: [ "https://app.example.com" ]

Modules

ModuleWhat it carries
krizaka-webRFC 9457 Problem Details with stable codes, X-Request-Id → MDC, Jackson 3 defaults, cursor pagination, declared CORS
krizaka-securityHS256 session-token verification, roles authorities, one security baseline, SERVICE tokens for /internal/v1/**
krizaka-messagingEvents through the outbox, envelope in AMQP headers, retry then DLQ, idempotent consumption
krizaka-observabilityRequired service names as metric tags, ECS JSON logs, health/info/prometheus, 10 % trace sampling

On this page