diff --git a/core/lib/Drupal/Core/ControllerResolver.php b/core/lib/Drupal/Core/ControllerResolver.php
index c1674fb..2175eb1 100644
--- a/core/lib/Drupal/Core/ControllerResolver.php
+++ b/core/lib/Drupal/Core/ControllerResolver.php
@@ -66,28 +66,35 @@ public function __construct(ContainerInterface $container, LoggerInterface $logg
    *   If the controller class does not exist
    */
   protected function createController($controller) {
+    // service:method
+    $count = substr_count($controller, ':');
+    if ($count == 1) {
+      // controller in the service:method notation
+      list($service, $method) = explode(':', $controller, 2);
+      return array($this->container->get($service), $method);
+    }
+
     // class::method
     if (strpos($controller, '::') !== FALSE) {
       list($class, $method) = explode('::', $controller, 2);
-
       if (!class_exists($class)) {
         throw new \InvalidArgumentException(sprintf('Class "%s" does not exist.', $class));
       }
-
-      $controller = new $class();
-      if ($controller instanceof ContainerAwareInterface) {
-        $controller->setContainer($this->container);
+      if (in_array('Drupal\Core\ControllerInterface', class_implements($class))) {
+        $controller = $class::create($this->container);
+      }
+      else {
+        $controller = new $class();
       }
-      return array($controller, $method);
+    }
+    else {
+      throw new \LogicException(sprintf('Unable to parse the controller name "%s".', $controller));
     }
 
-    // service:method
-    if (substr_count($controller, ':') == 1) {
-      // controller in the service:method notation
-      list($service, $method) = explode(':', $controller, 2);
-      return array($this->container->get($service), $method);
+    if ($controller instanceof ContainerAwareInterface) {
+      $controller->setContainer($this->container);
     }
 
-    throw new \LogicException(sprintf('Unable to parse the controller name "%s".', $controller));
+    return array($controller, $method);
   }
 }
diff --git a/core/modules/user/lib/Drupal/user/UserAutocompleteController.php b/core/modules/user/lib/Drupal/user/UserAutocompleteController.php
index 9b668bf..1081d65 100644
--- a/core/modules/user/lib/Drupal/user/UserAutocompleteController.php
+++ b/core/modules/user/lib/Drupal/user/UserAutocompleteController.php
@@ -8,11 +8,14 @@
 
 use Symfony\Component\HttpFoundation\JsonResponse;
 use Symfony\Component\HttpFoundation\Request;
+use Symfony\Component\DependencyInjection\ContainerInterface;
+
+use Drupal\Core\ControllerInterface;
 
 /**
  * Controller routines for taxonomy user routes.
  */
-class UserAutocompleteController {
+class UserAutocompleteController implements ControllerInterface {
 
   /**
    * The user autocomplete helper class to find matching user names.
@@ -32,6 +35,15 @@ public function __construct(UserAutocomplete $user_autocomplete) {
   }
 
   /**
+   * Implements \Drupal\ControllerInterface::create().
+   */
+  public static function create(ContainerInterface $container) {
+    return new static(
+      $container->get('user.autocomplete')
+    );
+  }
+
+  /**
    * Returns response for the user autocompletion.
    *
    * @param \Symfony\Component\HttpFoundation\Request $request
diff --git a/core/modules/user/lib/Drupal/user/UserBundle.php b/core/modules/user/lib/Drupal/user/UserBundle.php
index 6cf5f52..f7c4a88 100644
--- a/core/modules/user/lib/Drupal/user/UserBundle.php
+++ b/core/modules/user/lib/Drupal/user/UserBundle.php
@@ -27,8 +27,6 @@ public function build(ContainerBuilder $container) {
     $container
       ->register('user.data', 'Drupal\user\UserData')
       ->addArgument(new Reference('database'));
-    $container->register('user.autocomplete_controller', 'Drupal\user\UserAutocompleteController')
-      ->addArgument(new Reference('user.autocomplete'));
     $container->register('user.autocomplete', 'Drupal\user\UserAutocomplete')
       ->addArgument(new Reference('database'))
       ->addArgument(new Reference('config.factory'));
diff --git a/core/modules/user/user.routing.yml b/core/modules/user/user.routing.yml
index ad70759..34b6059 100644
--- a/core/modules/user/user.routing.yml
+++ b/core/modules/user/user.routing.yml
@@ -8,13 +8,13 @@ user_register:
 user_autocomplete:
   pattern: '/user/autocomplete'
   defaults:
-    _controller: 'user.autocomplete_controller:autocompleteUser'
+    _controller: '\Drupal\user\UserAutocompleteController::autocompleteUser'
   requirements:
     _permission: 'access user profiles'
 
 user_autocomplete_anonymous:
   pattern: '/user/autocomplete/anonymous'
   defaults:
-    _controller: 'user.autocomplete_controller:autocompleteUserAnonymous'
+    _controller: '\Drupal\user\UserAutocompleteController::autocompleteUserAnonymous'
   requirements:
     _permission: 'access user profiles'
