Bootiful Spring Boot: the Deep-Dive

Hi, Spring fans! Developers today are being asked to deliver more with less time and build ever more efficient services, and Spring is ready to help you meet the demands. In this workshop, we'll take a roving tour of all things Spring, looking at fundamentals of the Spring component model, look at Spring Boot, and then see how to apply Spring in the context of batch processing, security, data processing, modular architecture, miroservices, messaging, AI, and so much more.

Here's a rough outline whose contents we may, or may not, get to assuming enough time (a day or two):

The code is here and you can learn more about this stuff on the channel I help run

Basics

  • which IDE? IntelliJ, VSCode, and Eclipse
  • your choice of Java: GraalVM
  • start.spring.io, an API, website, and an IDE wizard
  • Devtools
  • Docker Compose
  • Testcontainers
  • banner.txt

Development Desk Check

  • the Spring JavaFormat Plugin
    • Python, gofmt, your favorite IDE, and
  • the power of environment variables
  • SDKMAN
    • .sdkman
  • direnv
    • .envrc
  • a good password manager for secrets

Data Oriented Programming in Java 21+

  • an example

Beans

  • dependency injection from first principles
  • bean configuration
  • XML
  • stereotype annotations
  • lifecycle
    • BeanPostProcessor
    • BeanFactoryPostProcessor
  • auto configuration
  • AOP
  • Spring's event publisher
  • configuration and the Environment
  • configuration processor

AOT & GraalVM

  • installing GraalVM
  • GraalVM native images
  • basics
  • AOT lifecycles

Scalability

  • non-blocking IO
  • virtual threads
  • José Paumard's demo
  • Cora Iberkleid's demo

Cloud Native Java (with Kubernetes)

  • graceful shutdown
  • ConfigMap and you
  • Buildpacks and Docker support
  • Actuator readiness and liveness probes

Data

  • JdbcClient
  • SQL Initialization
  • Flyway
  • Spring Data JDBC

Web Programming

  • clients: RestTemplate, RestClient, declarative interface clients
  • REST
    • controllers
    • functional style
  • GraphQL
    • batches

Architecting for Modularity

  • Privacy
  • Spring Modulith
  • Externalized messages
  • Testing

Batch Processing

  • Spring Batch
  • load some data from a CSV file to a SQL database

Microservices

  • centralized configuration
  • API gateways
    • reactive or not reactive
  • event bus and refreshable configuration
  • service registration and discovery

Messaging and Integration

  • "What do you mean by Event Driven?"
  • Messaging Technologies like RabbitMQ or Apache Kafka
  • Spring Integration
  • files to events

Kafka

  • a look at Spring for Apache Kafka
  • Spring Integration
  • Spring Cloud Stream
  • Spring Cloud Stream Kafka Streams

Security

  • adding form login to an application
  • authentication
  • authorization
  • passkeys
  • one time tokens
  • OAuth
    • the Spring Authorizatinm Server
    • OAuth clients
    • OAuth resource servers
    • protecting messaging code

Want this talk at your event? Get in touch, and have a look at where I'll be next.

Other talks