A small library,
maintained for over a decade.
DDI – Dynamic Dependency Injection – is a focused, nano-sized library that hands the wiring decision back to your application code. It is built and maintained by one engineer, independently, in the European Union, under EUPL 1.2.

Who maintains this
Hi, I'm Sven Ruppert. DDI started over a decade ago,
originally as part of the org.rapidpm project family,
because I kept rebuilding the same pattern across projects: a
ClassResolver that decides at runtime which implementation
to inject — based on the user, the tenant, the plan, the feature flag.
Spring and Guice forced me to express that decision in their lifecycle.
DDI was my answer: keep DI tiny, hand the decision back to plain Java.
I've been writing Java in production for over 20 years, across enterprise platforms, regulated industries, and a long stint at JFrog as a Developer Advocate before going independent. Today I split my time between this library, its sister project functional-reactive, jSentinel (a Core-Java security library that pairs beautifully with DDI's resolvers), consulting engagements, and a YouTube channel.
I believe in tools that respect the user: small surface area, no magic, no surprise behaviour, and licences that don't pivot. That's why DDI ships under EUPL 1.2, keeps its public API to five core classes, and stays compatible with current LTS Java.
What the library tries to be
Decision belongs in your code
The resolver runs every time. Whatever rule picks the implementation lives in plain Java where you can read it, test it, and step through it with a debugger — not in an XML file or annotation table.
Small surface area
Five public classes in the core. You can read the entire library in an afternoon. If a feature doesn't earn its keep, it doesn't go in.
Mutation-proven
Over 90 % PIT mutation coverage. The library tests itself the way you should test yours — assertions on behaviour, not on bookkeeping.
License that stays
EUPL 1.2. Permanently. No source-available pivots, no rug-pulls. If sponsorship ends, the licence stays.
Other projects & channels
Background, talks and ongoing projects.
A focused functional/reactive library built on the same minimal-deps philosophy.
Identity, plans and quotas — the data your DDI resolver reads to make policy-driven decisions.
Java-Architektur, DI-Patterns und reaktive Themen — Live-Coding auf Deutsch.
Functional Java deep-dives in English — same topics, English audience.
Questions, ideas, problems?
For library-specific issues, open a ticket on GitHub. For consulting or sponsorship, drop me an email.