diff --git a/core/modules/search/lib/Drupal/search/Plugin/SearchPluginBase.php b/core/modules/search/lib/Drupal/search/Plugin/SearchPluginBase.php
index 7f534d5..0cba8f9 100644
--- a/core/modules/search/lib/Drupal/search/Plugin/SearchPluginBase.php
+++ b/core/modules/search/lib/Drupal/search/Plugin/SearchPluginBase.php
@@ -9,6 +9,7 @@
 
 use Drupal\Core\Plugin\PluginBase;
 use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
+use Symfony\Component\DependencyInjection\ContainerInterface;
 
 /**
  * Defines a base class for plugins wishing to support search.
@@ -39,6 +40,17 @@
   /**
    * {@inheritdoc}
    */
+  static public function create(ContainerInterface $container, array $configuration, $plugin_id, array $plugin_definition) {
+    return new static(
+      $configuration,
+      $plugin_id,
+      $plugin_definition
+    );
+  }
+
+  /**
+   * {@inheritdoc}
+   */
   public function setSearch($keywords, array $parameters, array $attributes) {
     $this->keywords = (string) $keywords;
     $this->searchParameters = $parameters;
diff --git a/core/modules/search/lib/Drupal/search/SearchPluginManager.php b/core/modules/search/lib/Drupal/search/SearchPluginManager.php
index dac919b..5430a1c 100644
--- a/core/modules/search/lib/Drupal/search/SearchPluginManager.php
+++ b/core/modules/search/lib/Drupal/search/SearchPluginManager.php
@@ -119,4 +119,28 @@ public function pluginAccess($plugin_id, AccountInterface $account) {
     }
     return TRUE;
   }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function createInstance($plugin_id, array $configuration = array()) {
+    $configuration = array_merge($configuration, $this->getConfiguration($plugin_id));
+    return $this->factory->createInstance($plugin_id, $configuration);
+  }
+
+  /**
+   * Gets plugin configuration stored in the configuration management system.
+   *
+   * @param string $plugin_id
+   *   The ID of the plugin to get configuration for.
+   *
+   * @return array
+   *   An array of plugin configuration.
+   */
+  protected function getConfiguration($plugin_id) {
+    $configuration = array();
+    $configuration['search.plugin.' . $plugin_id] = $this->configFactory->get('search.plugin.' . $plugin_id);
+    return $configuration;
+  }
+
 }
diff --git a/core/modules/search/tests/modules/search_extra_type/config/search.plugin.search_extra_type_search.yml b/core/modules/search/tests/modules/search_extra_type/config/search.plugin.search_extra_type_search.yml
new file mode 100644
index 0000000..db64246
--- /dev/null
+++ b/core/modules/search/tests/modules/search_extra_type/config/search.plugin.search_extra_type_search.yml
@@ -0,0 +1 @@
+boost: bi
diff --git a/core/modules/search/tests/modules/search_extra_type/lib/Drupal/search_extra_type/Plugin/Search/SearchExtraTypeSearch.php b/core/modules/search/tests/modules/search_extra_type/lib/Drupal/search_extra_type/Plugin/Search/SearchExtraTypeSearch.php
index 2ea35eb..21c8c58 100644
--- a/core/modules/search/tests/modules/search_extra_type/lib/Drupal/search_extra_type/Plugin/Search/SearchExtraTypeSearch.php
+++ b/core/modules/search/tests/modules/search_extra_type/lib/Drupal/search_extra_type/Plugin/Search/SearchExtraTypeSearch.php
@@ -26,40 +26,6 @@
 class SearchExtraTypeSearch extends SearchPluginBase implements PluginFormInterface {
 
   /**
-   * @var \Drupal\Core\Config\Config
-   */
-  protected $configSettings;
-
-  /**
-   * {@inheritdoc}
-   */
-  static public function create(ContainerInterface $container, array $configuration, $plugin_id, array $plugin_definition) {
-    return new static(
-      $container->get('config.factory')->get('search_extra_type.settings'),
-      $configuration,
-      $plugin_id,
-      $plugin_definition
-    );
-  }
-
-  /**
-   * Creates a SearchExtraTypeSearch object.
-   *
-   * @param Config $config_settings
-   *   The extra config settings.
-   * @param array $configuration
-   *   A configuration array containing information about the plugin instance.
-   * @param string $plugin_id
-   *   The plugin_id for the plugin instance.
-   * @param array $plugin_definition
-   *   The plugin implementation definition.
-   */
-  public function __construct(Config $config_settings, array $configuration, $plugin_id, array $plugin_definition) {
-    $this->configSettings = $config_settings;
-    parent::__construct($configuration, $plugin_id, $plugin_definition);
-  }
-
-  /**
    * {@inheritdoc}
    */
   public function setSearch($keywords, array $parameters, array $attributes) {
@@ -140,7 +106,7 @@ public function buildConfigurationForm(array $form, array &$form_state) {
         'bi' => t('Bistromathic'),
         'ii' => t('Infinite Improbability'),
       ),
-      '#default_value' => $this->configSettings->get('boost'),
+      '#default_value' => $this->configuration['search.plugin.' . $this->pluginId]->get('boost'),
     );
     return $form;
   }
@@ -155,7 +121,7 @@ public function validateConfigurationForm(array &$form, array &$form_state) {
    * {@inheritdoc}
    */
   public function submitConfigurationForm(array &$form, array &$form_state) {
-    $this->configSettings
+    $this->configuration['search.plugin.' . $this->pluginId]
       ->set('boost', $form_state['values']['extra_type_settings']['boost'])
       ->save();
   }
