poodinis 7.0.0

A dependency injection framework with support for autowiring.

To use this package, put the following dependency into your project's dependencies section:


Poodinis Dependency Injection Framework

Version 7.0.0 Copyright 2014-2016 Mike Bierlee Licensed under the terms of the MIT license - See LICENSE.txt

Master: Build Status - Dev: Build Status

Poodinis is a dependency injection framework for the D programming language. It is inspired by the [Spring Framework] and [Hypodermic] IoC container for C++. Poodinis supports registering and resolving classes either by concrete type or interface. Automatic injection of dependencies is supported through the use of UDAs or constructors.

Requires at least a D 2.068.0 compatible compiler Uses the Phobos standard library Can be built with DUB 0.9.24 or higher


  • Member injection: Injection of dependencies in class members of any visibility (public, private, etc.)
  • Constructor injection: Automatic injection of dependencies in class constructors on creation.
  • Type qualifiers: Inject concrete types into members defined only by abstract types.
  • Application contexts: Control the creation of dependencies manually through factory methods.
  • Multi-threadable: Dependency containers return the same dependencies across all threads.
  • Minimal set-up: Creation and injection of conventional classes requires almost no manual dependency configuration.
  • Well-tested: Developed test-driven, a great number of scenarios are tested as part of the test suite.

See the TUTORIAL.md and examples for a complete walkthrough of all features.

Getting started

###DUB Dependency See the Poodinis [DUB project page] for instructions on how to include Poodinis into your project.

###Quickstart The following example shows the typical usage of Poodinis:

import poodinis;

class Driver {}

interface Database {};

class RelationalDatabase : Database {
	private Driver driver;

	this(Driver driver) { // Automatically injected on creation by container
		this.driver = driver;

class DataWriter {
	private Database database; // Automatically injected when class is resolved

void main() {
	auto dependencies = new shared DependencyContainer();
	dependencies.register!(Database, RelationalDatabase);

	auto writer = dependencies.resolve!DataWriter;

Dependency set-up can further be reduced by enabling "Register on resolve". For more details and examples, see the examples directory.


You can generate Public API documentation from the source code using DUB:

dub build --build=ddox

The documentation can then be found in docs/


For a full overview of changes, see CHANGES.md

Future Work

  • Component scan (auto-registration)
  • Phobos collections autowiring
  • Named qualifiers
  • Value type injection


Any and all pull requests are welcome! If you (only) want discuss changes before making them, feel free to open an Issue on github. Please develop your changes on (a branch based on) the develop branch. Continuous integration is preferred so feature branches are not neccessary.

  • Mike Bierlee
8.0.3 2018-Jun-11
8.0.2 2018-Apr-15
8.0.1 2017-Aug-13
8.0.0 2016-Dec-26
7.0.1 2016-Sep-05
Show all 27 versions
Download Stats:
  • 4 downloads today

  • 104 downloads this week

  • 395 downloads this month

  • 9522 downloads total

Short URL: