Desenvolvimento de Software
Java, Spring, testes e refatoração: o ofício dentro de cada serviço.
6 artigos, 2026
Artigos
6 artigos
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.Virtual threads no Java 21 — pinning e CLOSE_WAIT
Por que um serviço Java 21 com virtual threads congela sem erro no log: pinning por
synchronized(resolvido no Java 24, JEP 491) e CLOSE_WAIT como rastro. Thread dump, JFR, bulkhead e circuit breaker.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().AtomicBoolean — o sinalizador thread-safe da parada graciosa
Por que um
booleancomum pode não ser visto por outra thread, quandovolatilebasta, por que preferirAtomicBooleane como ligar oSIGTERMa um job sem encerrar a JVM no meio de um lote.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).
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.Virtual threads no Java 21 — pinning e CLOSE_WAIT
Por que um serviço Java 21 com virtual threads congela sem erro no log: pinning por
synchronized(resolvido no Java 24, JEP 491) e CLOSE_WAIT como rastro. Thread dump, JFR, bulkhead e circuit breaker.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().AtomicBoolean — o sinalizador thread-safe da parada graciosa
Por que um
booleancomum pode não ser visto por outra thread, quandovolatilebasta, por que preferirAtomicBooleane como ligar oSIGTERMa um job sem encerrar a JVM no meio de um lote.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).