Introduction
more-di-axum
is a crate which provides dependency injection (DI) extensions for the axum
web framework. Any trait
or struct
can be used as an injected service.
axum
provides a dependency injection example; however, it is very limited. axum
does not have nor provide a
fully-fledged DI framework. State in axum
must support Clone
and is copied many times within the pipeline. In particular,
the native State model does not intrinsically support a scoped (e.g. per-request) lifetime. This is a limitation of
Clone
. A state can be wrapped in Arc
as a singleton; otherwise, it is transient. more-di-axum
brings full support
for various lifetimes by layering over the more-di library and makes them ergonomic to
consume within axum
. Since more-di
is a complete DI framework, swapping out dependency registration in different contexts,
such as testing, is trivial.
Contributing
more-di-axum
is free and open source. You can find the source code on GitHub
and issues and feature requests can be posted on the GitHub issue tracker.
more-di-axum
relies on the community to fix bugs and add features: if you'd like to contribute, please read the
CONTRIBUTING guide and consider opening
a pull request.
License
This project is licensed under the MIT license.