#Spring
9 artigos marcados com Spring, em 5 livros.
Filtros de serialização no Jackson — mascarando número de cartão nos logs
Como usar
@JsonFilter,PropertyFiltere um mixin emObjectpara mascarar o número do cartão e remover o CVV só no mapper de log, com a API ainda devolvendo tudo.CronJob ou endpoint + fila — onde rodar o batch de uma API Spring Boot no Kubernetes
Uma API Spring Boot no Kubernetes precisa de uma rotina agendada: CronJob com a mesma imagem e o perfil
batch, ou endpoint que enfileira no SQS para a própria API consumir? Onze critérios comparados.Bloqueio otimista e pessimista — como funcionam e quando usar cada um
Como impedir que gravações simultâneas se atropelem: coluna de versão ou trava da linha. SQL testado no PostgreSQL, Spring Data JPA, NOWAIT e SKIP LOCKED, deadlock, isolamento e o UPDATE condicional.
AOP no Spring — JDK Dynamic Proxy, CGLIB e aspects customizados
Como o Spring aplica log, transação e métricas fora da regra de negócio: conceitos de AOP, JDK Dynamic Proxy ou CGLIB (e por que o Boot prefere CGLIB), a self-invocation e aspects próprios.
AopUtils.getTargetClass() — desembrulhando os proxies do Spring
Com o bean envolto em proxy,
bean.getClass()devolve a classe do proxy e a leitura de anotações falha. ComoAopUtils.getTargetClass()recupera a classe real e quando usarultimateTargetClass().Gradle — quando usar implementation, api, compileOnly e as demais configurações
Cada configuração de dependência do Gradle alimenta um classpath: compilação, execução, processadores de anotação ou testes. Guia para bibliotecas e starters Spring Boot, com o papel do
platform(BOM).Logging estruturado em Spring Boot — LogstashEncoder vs o suporte nativo do 3.4+
Cada log como uma linha JSON pesquisável: o caminho clássico com
LogstashEncodere o suporte nativo do Spring Boot 3.4+ (ECS, Logstash e GELF), com saídas reais, comparativo e critério de escolha.SIGTERM e SIGKILL — o ciclo de término de um pod no Kubernetes
Como o Kubernetes encerra um pod:
SIGTERM,SIGKILLe grace period, a corrida com os endpoints que opreStopresolve, exit codes, o graceful shutdown do Spring Boot e a pegadinha do PID 1.Wide events e canonical log lines — a evolução do logging estruturado
Um evento rico em contexto por requisição, no lugar de dezenas de logs parciais: as canonical log lines da Stripe, cardinalidade e Observability 2.0, um filtro em Spring Boot e tail sampling.
Filtros de serialização no Jackson — mascarando número de cartão nos logs
Como usar
@JsonFilter,PropertyFiltere um mixin emObjectpara mascarar o número do cartão e remover o CVV só no mapper de log, com a API ainda devolvendo tudo.CronJob ou endpoint + fila — onde rodar o batch de uma API Spring Boot no Kubernetes
Uma API Spring Boot no Kubernetes precisa de uma rotina agendada: CronJob com a mesma imagem e o perfil
batch, ou endpoint que enfileira no SQS para a própria API consumir? Onze critérios comparados.Bloqueio otimista e pessimista — como funcionam e quando usar cada um
Como impedir que gravações simultâneas se atropelem: coluna de versão ou trava da linha. SQL testado no PostgreSQL, Spring Data JPA, NOWAIT e SKIP LOCKED, deadlock, isolamento e o UPDATE condicional.
AOP no Spring — JDK Dynamic Proxy, CGLIB e aspects customizados
Como o Spring aplica log, transação e métricas fora da regra de negócio: conceitos de AOP, JDK Dynamic Proxy ou CGLIB (e por que o Boot prefere CGLIB), a self-invocation e aspects próprios.
AopUtils.getTargetClass() — desembrulhando os proxies do Spring
Com o bean envolto em proxy,
bean.getClass()devolve a classe do proxy e a leitura de anotações falha. ComoAopUtils.getTargetClass()recupera a classe real e quando usarultimateTargetClass().Gradle — quando usar implementation, api, compileOnly e as demais configurações
Cada configuração de dependência do Gradle alimenta um classpath: compilação, execução, processadores de anotação ou testes. Guia para bibliotecas e starters Spring Boot, com o papel do
platform(BOM).Logging estruturado em Spring Boot — LogstashEncoder vs o suporte nativo do 3.4+
Cada log como uma linha JSON pesquisável: o caminho clássico com
LogstashEncodere o suporte nativo do Spring Boot 3.4+ (ECS, Logstash e GELF), com saídas reais, comparativo e critério de escolha.SIGTERM e SIGKILL — o ciclo de término de um pod no Kubernetes
Como o Kubernetes encerra um pod:
SIGTERM,SIGKILLe grace period, a corrida com os endpoints que opreStopresolve, exit codes, o graceful shutdown do Spring Boot e a pegadinha do PID 1.Wide events e canonical log lines — a evolução do logging estruturado
Um evento rico em contexto por requisição, no lugar de dezenas de logs parciais: as canonical log lines da Stripe, cardinalidade e Observability 2.0, um filtro em Spring Boot e tail sampling.