Class HealthController
{status, versao} (norma
X-Adm de versionamento e health).
Condicional (@Requires(property = "endpoints.health.enabled", value =
"false")): só provê /health quando o app desliga o HealthEndpoint do
micronaut-management. Como a lib traz micronaut-management transitivamente (VersaoInfo é
InfoSource), por default o management serve o /health rico (DB-aware) e este
controller fica dormente; quem quer o shape plano seta endpoints.health.enabled: false
e este controller acorda — sem as duas rotas GET /health colidirem (Micronaut responde 400
quando colidem).
Por que property e não missingBeans: missingBeans = HealthEndpoint é
decisão de build-time do grafo de beans — sob native-image (AOT) a definição do
HealthEndpoint existe no classpath (management transitivo), então missingBeans=false
e o controller nunca registrava, mesmo com endpoints.health.enabled=false; resultado:
/health pelado sem versao no binário native (o management estava desligado em runtime,
mas o flat não assumia). A condição por property resolve em runtime e sobrevive ao AOT.
Trade-off consciente do shape plano: é liveness (o app está no ar), não readiness — não
agrega o estado do banco. A versão também está em /info via VersaoInfo.
-
Constructor Summary
Constructors -
Method Summary
-
Constructor Details
-
HealthController
public HealthController()Construtor padrão.
-