p.location-badge. exported from <a href="/angular2/di.html">angular2/di</a> defined in <a href="https://github.com/angular/angular/tree/master/modules/angular2/src/di/injector.js#L60">angular2/src/di/injector.js (line 60)</a> :markdown A dependency injection container used for resolving dependencies. An `Injector` is a replacement for a `new` operator, which can automatically resolve the constructor dependencies. In typical use, application code asks for the dependencies in the constructor and they are resolved by the `Injector`. ## Example: Suppose that we want to inject an `Engine` into class `Car`, we would define it like this: ```javascript class Engine { } class Car { constructor(@Inject(Engine) engine) { } } ``` Next we need to write the code that creates and instantiates the `Injector`. We then ask for the `root` object, `Car`, so that the `Injector` can recursively build all of that object's dependencies. ```javascript main() { var injector = Injector.resolveAndCreate([Car, Engine]); // Get a reference to the `root` object, which will recursively instantiate the tree. var car = injector.get(Car); } ``` Notice that we don't use the `new` operator because we explicitly want to have the `Injector` resolve all of the object's dependencies automatically. .l-main-section h2 Members .l-sub-section h3 constructor pre.prettyprint code. constructor(bindings:List<ResolvedBinding>, parent:Injector, defaultBindings:boolean, [object Object], [object Object], [object Object]) :markdown .l-sub-section h3 asyncGet pre.prettyprint code. asyncGet(token, [object Object]) :markdown Retrieves an instance from the injector asynchronously. Used with asynchronous bindings. .l-sub-section h3 createChildFromResolved pre.prettyprint code. createChildFromResolved(bindings:List<ResolvedBinding>, [object Object]) :markdown Creates a child injector and loads a new set of <a href="ResolvedBinding-class.html"><code>ResolvedBinding</code></a>s into it. .l-sub-section h3 fromResolvedBindings pre.prettyprint code. fromResolvedBindings(bindings:List<ResolvedBinding>, {defaultBindings=false}={}, [object Object], [object Object]) :markdown Creates an injector from previously resolved bindings. This bypasses resolution and flattening. This API is the recommended way to construct injectors in performance-sensitive parts. .l-sub-section h3 get pre.prettyprint code. get(token, [object Object]) :markdown Retrieves an instance from the injector. .l-sub-section h3 getOptional pre.prettyprint code. getOptional(token, [object Object]) :markdown Retrieves an instance from the injector. .l-sub-section h3 resolve pre.prettyprint code. resolve(bindings:List, [object Object]) :markdown Turns a list of binding definitions into an internal resolved list of resolved bindings. A resolution is a process of flattening multiple nested lists and converting individual bindings into a list of <a href="ResolvedBinding-class.html"><code>ResolvedBinding</code></a>s. The resolution can be cached by `resolve` for the <a href="Injector-class.html"><code>Injector</code></a> for performance-sensitive code. .l-sub-section h3 resolveAndCreate pre.prettyprint code. resolveAndCreate(bindings:List, {defaultBindings=false}={}, [object Object], [object Object]) :markdown Resolves bindings and creates an injector based on those bindings. This function is slower than the corresponding `fromResolvedBindings` because it needs to resolve bindings first. See `resolve` for the <a href="Injector-class.html"><code>Injector</code></a>. Prefer `fromResolvedBindings` in performance-critical code that creates lots of injectors. .l-sub-section h3 resolveAndCreateChild pre.prettyprint code. resolveAndCreateChild(bindings:List, [object Object]) :markdown Creates a child injector and loads a new set of bindings into it. A resolution is a process of flattening multiple nested lists and converting individual bindings into a list of <a href="ResolvedBinding-class.html"><code>ResolvedBinding</code></a>s. The resolution can be cached by `resolve` for the <a href="Injector-class.html"><code>Injector</code></a> for performance-sensitive code.