title: Symfony 3.3 injecting repositories into services
body: <p>I have a bundle which is held in a private Satis repository as its entities and repositories are shared between multiple application.</p>
  
  <p>The rest of the applications that consume that bundle are Symfony 2.7 and 2.8 applications. I'm working on a new application and the requirement is to use Symfony 3.3.</p>
  
  <p>In the symfony 3.3 application I have tried this in my services.yml:</p>
  
  <pre><code># Learn more about services, parameters and containers at
  # http://symfony.com/doc/current/service_container.html
  parameters:
      #parameter_name: value
  
  services:
  # default configuration for services in *this* file
      _defaults:
          autowire: true
          autoconfigure: true
          # this means you cannot fetch services directly from the container via $container-&gt;get()
          # if you need to do this, you can override this setting on individual services
          public: false
  
      # makes classes in src/AppBundle available to be used as services
      # this creates a service per class whose id is the fully-qualified class name
      CbmLtd\UvmsBundle\:
          resource: '../../vendor/cbmltd/uvms-bundle/*'
          exclude: '../../vendor/cbmltd/uvms-bundle/{Entity,Repository}'
  
      UvmsApiV1Bundle\:
          resource: '../../src/UvmsApiV1Bundle/*'
          exclude: '../../src/UvmsApiV1Bundle/{Entity,Repository}'
  </code></pre>
  
  <p>The above gives the following exception:</p>
  
  <blockquote>
    <p>Cannot autowire service "UvmsApiV1Bundle\Service\DealerService": argument "$repository" of method "__construct()" references class "CbmLtd\UvmsBundle\Repository\DealerRepository" but no such service exists. It cannot be auto-registered because it is from a different root namespace.</p>
  </blockquote>
  
  <p>Ok, so I guess I need to explicitly declare this repository as a service. I cannot find anything in Symfony 3.3 documentation about declaring a repository as a service, and the 2.8 syntax doesn't work either.</p>
  
  <p>I added this to my services.yml:</p>
  
  <pre><code>services:
      ...
      CbmLtd\UvmsBundle\DealerRepository:
          class: CbmLtd\UvmsBundle\Entity\DealerRepository
          factory_service: doctrine.orm.entity_manager
          factory_method: getRepository
          arguments:
              - CbmLtd\UvmsBundle\Entity\Dealer
  </code></pre>
  
  <p>But I still get this exception:</p>
  
  <blockquote>
    <p>Cannot autowire service "UvmsApiV1Bundle\Service\DealerService": argument "$repository" of method "__construct()" references class "CbmLtd\UvmsBundle\Repository\DealerRepository" but no such service exists. It cannot be auto-registered because it is from a different root namespace.</p>
  </blockquote>
  
  <p>I cannot make any changes to CbmLtd\UvmsBundle as this is used by multiple applications. Any help would be appreciated. I've literally spent hours on this, it's very frustrating.</p>