{"id":13806475,"url":"https://github.com/mbierlee/poodinis","last_synced_at":"2026-01-11T04:00:15.910Z","repository":{"id":17657427,"uuid":"20462012","full_name":"mbierlee/poodinis","owner":"mbierlee","description":"Dependency injection framework for D with support for autowiring.","archived":false,"fork":false,"pushed_at":"2025-07-31T18:51:44.000Z","size":658,"stargazers_count":73,"open_issues_count":2,"forks_count":12,"subscribers_count":9,"default_branch":"main","last_synced_at":"2025-07-31T21:58:09.942Z","etag":null,"topics":["d","dependency-injection","dlang","dub","injection","ioc","ioc-container","poodinis"],"latest_commit_sha":null,"homepage":"","language":"D","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mbierlee.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGES.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2014-06-03T22:26:51.000Z","updated_at":"2025-07-31T18:49:53.000Z","dependencies_parsed_at":"2024-05-02T10:03:06.121Z","dependency_job_id":"1312c1ce-a995-4580-8138-dc929d72f068","html_url":"https://github.com/mbierlee/poodinis","commit_stats":null,"previous_names":[],"tags_count":40,"template":false,"template_full_name":null,"purl":"pkg:github/mbierlee/poodinis","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mbierlee%2Fpoodinis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mbierlee%2Fpoodinis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mbierlee%2Fpoodinis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mbierlee%2Fpoodinis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mbierlee","download_url":"https://codeload.github.com/mbierlee/poodinis/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mbierlee%2Fpoodinis/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28280258,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-11T03:48:11.750Z","status":"ssl_error","status_checked_at":"2026-01-11T03:48:02.765Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["d","dependency-injection","dlang","dub","injection","ioc","ioc-container","poodinis"],"created_at":"2024-08-04T01:01:12.272Z","updated_at":"2026-01-11T04:00:15.890Z","avatar_url":"https://github.com/mbierlee.png","language":"D","funding_links":[],"categories":["Dependency Injection"],"sub_categories":["Language Processing"],"readme":"# Poodinis Dependency Injection Framework\n\nVersion 9.0.2  \nCopyright 2014-2026 Mike Bierlee  \nLicensed under the terms of the MIT license - See [LICENSE.txt](LICENSE.txt)\n\n[![DUB Package](https://img.shields.io/dub/v/poodinis.svg)](https://code.dlang.org/packages/poodinis) [![CI](https://github.com/mbierlee/poodinis/actions/workflows/dub.yml/badge.svg)](https://github.com/mbierlee/poodinis/actions/workflows/dub.yml)\n\nPoodinis 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.\n\nRequires at least a D 2.086.1 compatible compiler  \nUses the Phobos standard library  \n\n## Features\n\n-   Member injection: Injection of dependencies in class members of any visibility (public, private, etc.)\n-   Constructor injection: Automatic injection of dependencies in class constructors on creation.\n-   Value injection: Value-types such as primitives or structs can be injected using custom value injectors.\n-   Type qualifiers: Inject concrete types into members defined only by abstract types.\n-   Application contexts: Control the creation of dependencies manually through factory methods.\n-   Multi-threadable: Dependency containers return the same dependencies across all threads.\n-   Minimal set-up: Creation and injection of conventional classes requires almost no manual dependency configuration.\n-   Well-tested: Developed test-driven, a great number of scenarios are tested as part of the test suite.\n\nSee the [TUTORIAL.md](TUTORIAL.md) and [examples](example) for a complete walkthrough of all features.\n\n## Getting started\n\n### DUB Dependency\n\nSee the Poodinis [DUB project page] for instructions on how to include Poodinis into your project.\n\n### Quickstart\n\nThe following example shows the typical usage of Poodinis:\n\n```d\nimport poodinis;\n\nclass Driver {}\n\ninterface Database {}\n\nclass RelationalDatabase : Database {\n\tprivate Driver driver;\n\n\tthis(Driver driver) { // Automatically injected on creation by container\n\t\tthis.driver = driver;\n\t}\n}\n\nclass DataWriter {\n\t@Inject\n\tprivate Database database; // Automatically injected when class is resolved\n}\n\nvoid main() {\n\tauto dependencies = new shared DependencyContainer();\n\tdependencies.register!Driver;\n\tdependencies.register!DataWriter;\n\tdependencies.register!(Database, RelationalDatabase);\n\n\tauto writer = dependencies.resolve!DataWriter;\n}\n```\n\nDependency set-up can further be reduced by enabling \"Register on resolve\". For more details and examples, see the [examples](example) directory.\n\n## Documentation\n\nYou can find the public API documentation [here](https://poodinis.dpldocs.info/v9.0.0/index.html).\n\nAlternatively you can generate documentation from the source code using DUB:\n\n```\ndub build --build=ddox\n```\n\nThe documentation can then be found in docs/\n\n## History\n\nFor a full overview of changes, see [CHANGES.md](CHANGES.md)\n\n## Value Injectors\n\nPoodinis doesn't come with implementations of value injectors. Value injectors are available in separate projects:\n\n-   [Mirage Config value injector](https://github.com/mbierlee/mirage-injector)\n-   [Proper-d value injector](https://github.com/mbierlee/poodinis-proper-d-injector)\n\nHave you made any or do you know of any? Please add them to this section via a pull request or open an issue.\n\n## Projects Using Poodinis\n\n-   [Hunt Framework](https://github.com/huntlabs/hunt-framework): A Web framework for D Programming Language. Full-stack high-performance.\n-   [Eloquent](https://github.com/SingingBush/eloquent): A lightweight web application written in D\n-   [ioc](https://github.com/FilipMalczak/ioc): Slow approach to Inversion of Control in D2 language\n\n## Future Work\n\n-   Component scan (auto-registration)\n-   Phobos collections autowiring\n-   Named qualifiers\n\n## Contributing\n\nAny and all pull requests are welcome! If you (only) want discuss changes before making them, feel free to open an Issue on github.\nPlease develop your changes on (a branch based on) the develop branch. Continuous integration is preferred so feature branches are not neccessary.\n\n[spring framework]: http://projects.spring.io/spring-framework/\n[hypodermic]: https://github.com/ybainier/hypodermic/\n[dub project page]: http://code.dlang.org/packages/poodinis\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmbierlee%2Fpoodinis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmbierlee%2Fpoodinis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmbierlee%2Fpoodinis/lists"}