#

API Docs for: v2.11.1
Show: Inherited Protected Private Deprecated

# File: packages/ember-runtime/lib/system/service.js

    import EmberObject from './object';
    import { createInjectionHelper } from '../inject';

    /**
      Creates a property that lazily looks up a service in the container. There
      are no restrictions as to what objects a service can be injected into.

      Example:

      ```javascript
      App.ApplicationRoute = Ember.Route.extend({
        authManager: Ember.inject.service('auth'),

        model: function() {
          return this.get('authManager').findCurrentUser();
        }
      });
      ```

      This example will create an `authManager` property on the application route
      that looks up the `auth` service in the container, making it easily
      accessible in the `model` hook.

      @method service
      @since 1.10.0
      @for Ember.inject
      @param {String} name (optional) name of the service to inject, defaults to
             the property's name
      @return {Ember.InjectedProperty} injection descriptor instance
      @public
    */
    createInjectionHelper('service');

    /**
      @class Service
      @namespace Ember
      @extends Ember.Object
      @since 1.10.0
      @public
    */
    const Service = EmberObject.extend();

    Service.reopenClass({
      isServiceFactory: true
    });

    export default Service;