# inversify/inversifyjs

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/inversify-inversifyjs).**

12,066 stars · 711 forks · TypeScript · MIT

## Links

- GitHub: https://github.com/inversify/InversifyJS
- Homepage: http://inversify.io/
- awesome-repositories: https://awesome-repositories.com/repository/inversify-inversifyjs.md

## Description

InversifyJS is an inversion of control framework and dependency injection library for TypeScript. It provides a centralized container to manage object lifecycles and automate the instantiation of classes and their dependencies.

The library decouples software components by mapping unique identifiers to concrete implementations. This architecture separates object creation from business logic and allows for the replacement of real service implementations with mock objects during unit testing.

The framework utilizes TypeScript decorators to provide metadata-driven injection and recursive dependency resolution. It manages the application object graph through container-based service location and lazy-loaded instance management.

## Tags

### Software Engineering & Architecture

- [TypeScript Dependency Injection Libraries](https://awesome-repositories.com/f/software-engineering-architecture/cross-platform-development/multiplatform-code-sharing/typescript-dependency-injection-libraries.md) — A dependency injection container for TypeScript applications that decouples components by mapping identifiers to concrete implementations.
- [Dependency Injection](https://awesome-repositories.com/f/software-engineering-architecture/integration-extensibility/dependency-injection.md) — Provides a comprehensive system for decoupling software components by injecting required dependencies. ([source](https://github.com/inversify/inversifyjs#readme))
- [Dependency Mapping](https://awesome-repositories.com/f/software-engineering-architecture/annotation-based-metadata-mapping/dependency-mapping.md) — Maps unique identifiers to concrete implementations to decouple components from specific class definitions.
- [Dependency Resolution](https://awesome-repositories.com/f/software-engineering-architecture/dependency-resolution.md) — Automates the process of retrieving and instantiating registered services from a container using type inference.
- [Inversion-of-Control Containers](https://awesome-repositories.com/f/software-engineering-architecture/inversion-of-control-containers.md) — Implements an inversion-of-control container to manage object lifecycles and dependency wiring.
- [Container-Based Dependency Injection](https://awesome-repositories.com/f/software-engineering-architecture/object-management-systems/dependency-injection-containers/container-type-resolvers/container-based-dependency-injection.md) — Provides a centralized container for registering and resolving dependencies to manage the application object graph.
- [Lazy Instance Provisioning](https://awesome-repositories.com/f/software-engineering-architecture/lazy-instance-provisioning.md) — Implements lazy instantiation by deferring object creation until a dependency is explicitly requested.
- [Recursive Dependency Resolution](https://awesome-repositories.com/f/software-engineering-architecture/recursive-dependency-resolution.md) — Analyzes and resolves the complete dependency tree to instantiate all nested requirements for a requested class.

### DevOps & Infrastructure

- [Metadata-Driven Dependency Injection](https://awesome-repositories.com/f/devops-infrastructure/dependency-management/dependency-injection-systems/metadata-driven-dependency-injection.md) — Utilizes TypeScript decorators and metadata to automatically resolve and inject service dependencies at runtime.

### Testing & Quality Assurance

- [Dependency-Mocked Unit Testers](https://awesome-repositories.com/f/testing-quality-assurance/general-testing-utilities/test-isolation/middleware-unit-testing/dependency-mocked-unit-testers.md) — Facilitates unit testing by allowing real service implementations to be replaced with mock objects in the container.

### Part of an Awesome List

- [Dependency Injection](https://awesome-repositories.com/f/awesome-lists/devtools/dependency-injection.md) — Powerful and lightweight IoC container.
- [Utility Libraries](https://awesome-repositories.com/f/awesome-lists/devtools/utility-libraries.md) — Inversion of control container for Node.js and browser apps.
