poodinis/README.md

75 lines
2.7 KiB
Markdown
Raw Normal View History

2016-02-09 23:18:12 +01:00
Poodinis Dependency Injection Framework
=======================================
2016-08-08 21:32:27 +02:00
Version 7.0.0
2016-02-09 23:18:12 +01:00
Copyright 2014-2016 Mike Bierlee
Licensed under the terms of the MIT license - See [LICENSE.txt](LICENSE.txt)
Master: [![Build Status](https://api.travis-ci.org/mbierlee/poodinis.png?branch=master)](https://travis-ci.org/mbierlee/poodinis) - Dev: [![Build Status](https://api.travis-ci.org/mbierlee/poodinis.png?branch=develop)](https://travis-ci.org/mbierlee/poodinis)
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.
2016-02-09 23:18:12 +01:00
Requires at least a D 2.068.0 compatible compiler
Uses the Phobos standard library
2016-06-27 21:01:19 +02:00
Can be built with DUB 0.9.24 or higher
2016-02-09 23:18:12 +01:00
History
-------
For a full overview of changes, see [CHANGES.md](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:
```d
import poodinis;
interface Database{};
class RelationalDatabase : Database {}
class DataWriter {
@Autowire
private Database database; // Automatically injected when class is resolved
}
void main() {
auto dependencies = new shared DependencyContainer();
2016-02-09 23:18:12 +01:00
dependencies.register!DataWriter;
dependencies.register!(Database, RelationalDatabase);
auto writer = dependencies.resolve!DataWriter;
}
```
For more examples, see the [examples](example) directory.
###Tutorial
For an extended tutorial walking you through all functionality offered by Poodinis, see [TUTORIAL.md](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)
* Phobos collections autowiring
* Named qualifiers
2016-02-11 20:46:16 +01:00
* Value type injection
2016-02-09 23:18:12 +01:00
Contributing
------------
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.
[Spring Framework]: http://projects.spring.io/spring-framework/
[Hypodermic]: https://github.com/ybainier/hypodermic/
[DUB]: http://code.dlang.org/
[DUB project page]: http://code.dlang.org/packages/poodinis
[Github issue tracker]: https://github.com/mbierlee/poodinis/issues