DInject Dependency Injection

DInject is designed to be a fast and light dependency injection library for server-side Java and Kotlin developers.

It is fast and light by using source code generation (like Dagger). There is no use of reflection or classpath scanning.

It is orientated to server-side use by providing similar functionality to Spring DI including Lifecycle support, @Factory + @Bean and the ability to get beans from the context (which is what we need in order to use DI for web route controllers for use with Javalin and other web libraries).

No AOP

Currently DInject does not include AOP. The expectation is that AOP functionality comes with other libraries - for example Ebean ORM has @Transactional and Metrics libraries have their own @Timed.

If we can stick to these additional libraries providing their own AOP/enhancement that has the benefit that DInject has no requirement for creating Dynamic Proxies which have relatively expensive startup cost.