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
- Python,
- 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
ConfigMapand 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