Skip to content

joshlong-attic/2024-bootiful-spring-workshop

Repository files navigation

README

bit.ly/spring-tips-playlist youtube.com/@coffeesoftware

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 processor

AOT & GraalVM

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

Data

  • JdbcClient
  • SQL Initialization
  • Flyway
  • Spring Data JDBC

Batch Processing

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

Scalability

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

Web Programming

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

Architecting for Modularity

  • Privacy
  • Spring Modulith
  • Externalized messages
  • Testing

Artificial Intelligence

  • what's in a model?
  • Spring AI
  • ChatClient
  • prompts
  • advisors
  • Retrieval Augmented Generation (RAG)

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

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

Q&A

  • I may not know, but I probably know who does know...