Add Avaje libraries
SentryMan opened this issue · 2 comments
I found this set of libraries created by @rbygrave (the creator of ebean orm) a while ago, and think they are criminally underrated.
- Avaje Inject - Microservice-focused compile-time injection framework without reflection. Includes lifecycle support, AOP, and component testing.
Inject is basically dagger if dagger decided to be like spring. It's a tiny lib (~74kb) that uses the power of annotation processing to generate DI classes. What distinguishes it from dagger is its focus on server-side development. It adds lifecycle support, conditional beans, component testing and AOP. You can see it's comparison to spring DI here.
- Avaje Jsonb - Fast, reflection-free Json binding with jackson-like annotations via apt source code generation.
Avaje Jsonb uses annotation processing to generate and register custom Json Adapters for every POJO annotated with Jackson-like annotations. Due to its total reliance on annotation processing, this lib is free from any reflection, giving it some decent benchmarks (TL:DR the benchmarks seems to suggest avaje is the 2nd fastest Json lib in most cases ran)
- Avaje Http Client - A wrapper on JDK 11's HttpClient that adds authentication and other enhancements. Includes support for defining client APIs similar to JAX-RS, Retrofit and Feign. Uses annotation processing to generate client API implementations.
As the description says, it is a wrapper library for the JDK http client that adds various enhancements, like retries, authentication and json mapping using jackson/gson/avaje-jsonb. It also ability to create feign-like interfaces through annotation processing. (You can begin to see a theme here)
- Avaje Http Server - Generates Lightweight JAX-RS style http servers using Javalin or Helidon/Nima SE. Use annotations like @path, @get, to define a rest api.
This library uses java annotation processing to adapt annotated rest controllers with (@path, @get, @post etc) to Javalin, Helidon SE, and Helidon Nima SE. The generated adapter classes that can be used with any JSR-330 compliant DI library to make working with these microframeworks easier.
- avaje config - Loads yaml and properties files, supports dynamic configuration, plugins, file-watching and config event listeners.
This is the only one in the set that doesn't use annotation processing in some way. It's a static configuration library that can dynamically load/watch configuration files, and can evaluate missing properties from JVM args, System.env, System.properties and other properties using ${ }
.
Pull request ;-)
Pull request ;-)
I've... already got one?