Code Explainers

Spring code explainers

java
package com.acme.catalog.persistence;
 
import jakarta.persistence.Column;
import jakarta.persistence.EntityListeners;

Auditing timestamps with a JPA MappedSuperclass in Spring

jpa auditing lifecycle-callbacks
Intermediate 5 steps
java
@Service
@RequiredArgsConstructor
public class ExchangeRateService {
 

Request-scoped rate caching in Spring

request-scope caching memoization
Advanced 6 steps
java
@Service
public class InventoryService {
 
    private final RestClient warehouseClient;

Bulkhead-protected HTTP calls in Spring

bulkhead resilience fallback
Intermediate 7 steps
java
@Configuration
public class DataSourceLoggingConfig {
 
    @Bean

Wrapping a Spring DataSource for query tracing

proxy pattern observability data source
Intermediate 7 steps
java
@RestController
@RequestMapping("/api/products")
@Validated
public class ProductSearchController {

Validating query params in a Spring controller

validation pagination rest-api
Intermediate 8 steps
java
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = PasswordsMatchValidator.class)
public @interface PasswordsMatch {

Custom cross-field validation in Spring

bean-validation custom-constraints cross-field-validation
Intermediate 8 steps
java
@Component
public class HeaderMergeFilter {
 
    private static final String PER_REQUEST_HEADERS = HeaderMergeFilter.class.getName() + ".headers";

Merging default and per-request headers in Spring

webclient filters http-headers
Intermediate 8 steps
java
@RestController
@RequestMapping("/api/reports")
public class ReportController {
 

Header-driven endpoints in a Spring controller

rest api request headers dependency injection
Intermediate 7 steps
java
@Component
public class RegionCacheWarmer implements SmartInitializingSingleton {
 
    private static final Logger log = LoggerFactory.getLogger(RegionCacheWarmer.class);

Warming a Spring cache at startup

caching startup-hook dependency-injection
Intermediate 7 steps
java
@RestController
@RequestMapping("/api/products")
@RequiredArgsConstructor
public class ProductBatchController {

Batch JSON Merge Patch in Spring

json-merge-patch rest-api partial-update
Intermediate 8 steps
java
@Component
public class RefreshTokenSuccessHandler implements AuthenticationSuccessHandler {
 
    private final RefreshTokenService refreshTokenService;

Issuing JWT and refresh tokens on login in Spring

authentication jwt http-cookies
Intermediate 7 steps
java
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.module.SimpleModule;

Serializing Money to JSON in Spring

serialization jackson money
Intermediate 8 steps
java
@Component
@Order(Ordered.HIGHEST_PRECEDENCE)
public class TenantResolutionFilter extends OncePerRequestFilter {
 

How a tenant-resolution filter works in Spring

multi-tenancy servlet-filter thread-local
Intermediate 8 steps
java
@Repository
public interface SubscriptionRepository extends JpaRepository<Subscription, Long> {
 
    @Modifying(clearAutomatically = true, flushAutomatically = true)

Bulk JPQL updates in a Spring Data repository

jpql bulk-update modifying-query
Intermediate 5 steps
java
package com.example.uploads.config;
 
import jakarta.servlet.MultipartConfigElement;
import org.springframework.boot.web.servlet.MultipartConfigFactory;

Configuring upload size limits in Spring

file-upload exception-handling http-errors
Intermediate 6 steps
java
public interface GitHubClient {
 
    @GetExchange("/users/{username}")
    GitHubUser getUser(@PathVariable String username);

Declarative HTTP clients in Spring

http-client declarative-api proxy
Intermediate 8 steps
java
@RestController
@RequestMapping("/api/products")
public class ProductSearchController {
 

Binding collection query params in Spring

rest-api query-parameters dependency-injection
Intermediate 6 steps
java
@Entity
@Table(name = "orders")
@SQLDelete(sql = "UPDATE orders SET deleted = true, deleted_at = now() WHERE id = ?")
@Where(clause = "deleted = false")

Soft deletes with Hibernate in Spring

soft-delete jpa hibernate
Intermediate 9 steps