Go to file
2015-07-03 23:56:03 +02:00
example Add canonical package module 2015-07-01 21:06:55 +02:00
source/poodinis Add canonical package module 2015-07-01 21:06:55 +02:00
test/poodinis Add registration option for registering a class by concrete type when registering by supertype 2015-05-03 02:03:34 +02:00
.gitignore Add linux binaries of examples to gitignore 2015-03-08 17:37:22 +01:00
.project Add registration of concrete classes 2014-05-06 01:32:22 +02:00
.travis.yml Add instructions for generating documentation from source 2015-05-01 01:20:05 +02:00
CHANGES.md Add canonical package module 2015-07-01 21:06:55 +02:00
dub.json Remove the word "quickstart" 2015-05-01 01:25:54 +02:00
hmod.cfg Explicitly put source directory in hmod config 2015-03-22 15:57:55 +01:00
LICENSE.txt Update copyrights 2015-01-25 21:55:02 +01:00
README.md Added more future work 2015-07-03 23:56:03 +02:00
TUTORIAL.md Split off extensive examples in README.md to a separate tutorial 2015-07-03 23:53:37 +02:00

Poodinis Dependency Injection Framework

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

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 (Referred to as autowiring).

Developed for D 2.067.1
Uses the Phobos standard library.
Can be built with DUB 0.9.22.

History

For a full overview of changes, see CHANGES.md

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;

interface Database{};
class RelationalDatabase : Database {}

class DataWriter {
	@Autowire
	public Database database; // Automatically injected when class is resolved
}

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

	auto writer = dependencies.resolve!DataWriter;
}

For more examples, see the examples directory.

###Tutorial For an extended tutorial walking you through all functionality offered by Poodinis, see TUTORIAL.md

Documentation

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

dub build --build=ddox

The documentation can then be found in docs/

Future Work

  • Component scan (auto-registration)
  • Custom instance factories (replaces registration scopes)
  • Collection autocompletion (Assign all variants to a collection)