/spring-fu

Spring Fu is an incubator for new Spring features related to explicit configuration and runtime efficiency.

Primary LanguageKotlinApache License 2.0Apache-2.0

Spring Fu

Build Status

Spring Fu is an incubator for new Spring features related to explicit configuration and runtime efficiency.

While regular Spring Boot applications are configured using annotations, conventions and automatic configuration based on conditions like "Is this class available in the classpath?", Spring Fu provides an explicit way of configuring Spring Boot applications with a Kotlin DSL (Kofu) or a Java DSL (Jafu) using functional bean definitions for both Spring Boot infrastructure and application code.

It has following characteristics:

  • Explicit configuration via Kotlin or Java DSL instead of annotations

  • Minimal set of features enabled by default

  • No classpath scanning, no feature enabled based on classpath detection

  • Both declarative (via the DSL) and programmatic (code auto-complete, allow any kind of if, for statements)

  • Functional configuration based on pure lambdas

  • Minimal reflection usage, no CGLIB proxy, no annotation processing

  • Faster startup and lower memory consumption

  • GraalVM native image friendly

The project also incubates various other features like Coroutines or GraalVM support. You can see the roadmap for more details.

It is not intended to be used in production, but rather to incubate and get feedback and contributions from the community in order to reach a point where its features can be integrated as part of existing Spring projects like Framework, Boot and Data.

Getting started

Choose your flavor and follow the documentation:

  • Kofu for Spring Boot applications written in Kotlin

  • Jafu for Spring Boot applications written in Java

Credits

In addition to the whole Spring and Reactor teams, special credits to: