diff --git a/core/core.services.yml b/core/core.services.yml
index 4d178eb5f9..bf6caf8936 100644
--- a/core/core.services.yml
+++ b/core/core.services.yml
@@ -180,7 +180,7 @@ services:
 
   cache_factory:
     class: Drupal\Core\Cache\CacheFactory
-    arguments: ['@settings', '%cache_default_bin_backends%']
+    arguments: ['%cache_default_bin_backends%']
     calls:
       - [setContainer, ['@service_container']]
   cache_contexts_manager:
@@ -201,12 +201,11 @@ services:
       - { name: backend_overridable }
   cache.backend.chainedfast:
     class: Drupal\Core\Cache\ChainedFastBackendFactory
-    arguments: ['@settings']
     calls:
       - [setContainer, ['@service_container']]
   cache.backend.database:
     class: Drupal\Core\Cache\DatabaseBackendFactory
-    arguments: ['@database', '@cache_tags.invalidator.checksum', '@settings']
+    arguments: ['@database', '@cache_tags.invalidator.checksum']
     tags:
       - { name: backend_overridable }
   cache.backend.apcu:
@@ -380,7 +379,7 @@ services:
     arguments: [replica]
   database.replica_kill_switch:
     class: Drupal\Core\Database\ReplicaKillSwitch
-    arguments: ['@settings', '@datetime.time', '@session']
+    arguments: ['@datetime.time', '@session']
     tags:
       - { name: event_subscriber }
   datetime.time:
@@ -388,7 +387,7 @@ services:
     arguments: ['@request_stack']
   file_system:
     class: Drupal\Core\File\FileSystem
-    arguments: ['@stream_wrapper_manager', '@settings', '@logger.channel.file']
+    arguments: ['@stream_wrapper_manager', '@logger.channel.file']
   file_url_generator:
     class: Drupal\Core\File\FileUrlGenerator
     arguments: ['@stream_wrapper_manager', '@request_stack', '@module_handler']
@@ -463,12 +462,12 @@ services:
   settings:
     class: Drupal\Core\Site\Settings
     factory: Drupal\Core\Site\Settings::getInstance
+    deprecated: The "%service_id%" service is deprecated in drupal:9.5.0 and is removed from drupal:10.0.0. Use \Drupal\Core\Site\Settings instead. See https://www.drupal.org/node/3306646
   state:
     class: Drupal\Core\State\State
     arguments: ['@keyvalue']
   queue:
     class: Drupal\Core\Queue\QueueFactory
-    arguments: ['@settings']
     calls:
       - [setContainer, ['@service_container']]
   queue.database:
@@ -765,7 +764,6 @@ services:
       - { name: http_middleware, priority: 400 }
   http_middleware.reverse_proxy:
     class: Drupal\Core\StackMiddleware\ReverseProxyMiddleware
-    arguments: ['@settings']
     tags:
       - { name: http_middleware, priority: 300 }
   http_middleware.kernel_pre_handle:
@@ -814,7 +812,6 @@ services:
     arguments: ['%language.default_values%']
   string_translator.custom_strings:
     class: Drupal\Core\StringTranslation\Translator\CustomStrings
-    arguments: ['@settings']
     tags:
       - { name: string_translator, priority: 30 }
   string_translation:
@@ -1263,7 +1260,7 @@ services:
     arguments: ['@config.manager', '@config.storage', '@config.storage.snapshot']
   config_exclude_modules_subscriber:
     class: Drupal\Core\EventSubscriber\ExcludedModulesEventSubscriber
-    arguments: ['@config.storage', '@settings', '@config.manager']
+    arguments: ['@config.storage', '@config.manager']
     tags:
       - { name: event_subscriber }
   exception.needs_installer:
@@ -1475,7 +1472,6 @@ services:
       - [setWriteSafeHandler, ['@session_handler.write_safe']]
   session_manager.metadata_bag:
     class: Drupal\Core\Session\MetadataBag
-    arguments: ['@settings']
   asset.css.collection_renderer:
     class: Drupal\Core\Asset\CssCollectionRenderer
     arguments: [ '@state', '@file_url_generator' ]
diff --git a/core/includes/install.core.inc b/core/includes/install.core.inc
index d947254701..0340f867fd 100644
--- a/core/includes/install.core.inc
+++ b/core/includes/install.core.inc
@@ -365,7 +365,6 @@ function install_begin_request($class_loader, &$install_state) {
   $container
     ->register('file_system', 'Drupal\Core\File\FileSystem')
     ->addArgument(new Reference('stream_wrapper_manager'))
-    ->addArgument(Settings::getInstance())
     ->addArgument((new LoggerChannelFactory())->get('file'));
 
   // Register the class loader so contrib and custom database drivers can be
diff --git a/core/lib/Drupal/Core/Cache/CacheFactory.php b/core/lib/Drupal/Core/Cache/CacheFactory.php
index eefbbae5d4..386016fbbd 100644
--- a/core/lib/Drupal/Core/Cache/CacheFactory.php
+++ b/core/lib/Drupal/Core/Cache/CacheFactory.php
@@ -13,13 +13,6 @@ class CacheFactory implements CacheFactoryInterface, ContainerAwareInterface {
 
   use ContainerAwareTrait;
 
-  /**
-   * The site settings.
-   *
-   * @var \Drupal\Core\Site\Settings
-   */
-  protected $settings;
-
   /**
    * A map of cache bin to default cache backend service name.
    *
@@ -36,14 +29,11 @@ class CacheFactory implements CacheFactoryInterface, ContainerAwareInterface {
   /**
    * Constructs CacheFactory object.
    *
-   * @param \Drupal\Core\Site\Settings $settings
-   *   The site settings.
    * @param array $default_bin_backends
    *   (optional) A mapping of bin to backend service name. Mappings in
    *   $settings take precedence over this.
    */
-  public function __construct(Settings $settings, array $default_bin_backends = []) {
-    $this->settings = $settings;
+  public function __construct(array $default_bin_backends = []) {
     $this->defaultBinBackends = $default_bin_backends;
   }
 
@@ -63,7 +53,7 @@ public function __construct(Settings $settings, array $default_bin_backends = []
    *   The cache backend object associated with the specified bin.
    */
   public function get($bin) {
-    $cache_settings = $this->settings->get('cache');
+    $cache_settings = Settings::get('cache');
     // First, look for a cache bin specific setting.
     if (isset($cache_settings['bins'][$bin])) {
       $service_name = $cache_settings['bins'][$bin];
diff --git a/core/lib/Drupal/Core/Cache/ChainedFastBackendFactory.php b/core/lib/Drupal/Core/Cache/ChainedFastBackendFactory.php
index 789b7274aa..e8b407abda 100644
--- a/core/lib/Drupal/Core/Cache/ChainedFastBackendFactory.php
+++ b/core/lib/Drupal/Core/Cache/ChainedFastBackendFactory.php
@@ -32,8 +32,6 @@ class ChainedFastBackendFactory implements CacheFactoryInterface {
   /**
    * Constructs ChainedFastBackendFactory object.
    *
-   * @param \Drupal\Core\Site\Settings|null $settings
-   *   (optional) The settings object.
    * @param string|null $consistent_service_name
    *   (optional) The service name of the consistent backend factory. Defaults
    *   to:
@@ -44,10 +42,10 @@ class ChainedFastBackendFactory implements CacheFactoryInterface {
    *   - 'cache.backend.apcu' (if the PHP process has APCu enabled)
    *   - NULL (if the PHP process doesn't have APCu enabled)
    */
-  public function __construct(Settings $settings = NULL, $consistent_service_name = NULL, $fast_service_name = NULL) {
+  public function __construct($consistent_service_name = NULL, $fast_service_name = NULL) {
     // Default the consistent backend to the site's default backend.
     if (!isset($consistent_service_name)) {
-      $cache_settings = isset($settings) ? $settings->get('cache') : [];
+      $cache_settings = Settings::get('cache', []);
       $consistent_service_name = $cache_settings['default'] ?? 'cache.backend.database';
     }
 
diff --git a/core/lib/Drupal/Core/Cache/DatabaseBackendFactory.php b/core/lib/Drupal/Core/Cache/DatabaseBackendFactory.php
index 175639444c..c4862c7926 100644
--- a/core/lib/Drupal/Core/Cache/DatabaseBackendFactory.php
+++ b/core/lib/Drupal/Core/Cache/DatabaseBackendFactory.php
@@ -21,13 +21,6 @@ class DatabaseBackendFactory implements CacheFactoryInterface {
    */
   protected $checksumProvider;
 
-  /**
-   * The site settings.
-   *
-   * @var \Drupal\Core\Site\Settings
-   */
-  protected $settings;
-
   /**
    * Constructs the DatabaseBackendFactory object.
    *
@@ -35,15 +28,12 @@ class DatabaseBackendFactory implements CacheFactoryInterface {
    *   Database connection
    * @param \Drupal\Core\Cache\CacheTagsChecksumInterface $checksum_provider
    *   The cache tags checksum provider.
-   * @param \Drupal\Core\Site\Settings $settings
-   *   (optional) The site settings.
    *
    * @throws \BadMethodCallException
    */
-  public function __construct(Connection $connection, CacheTagsChecksumInterface $checksum_provider, Settings $settings = NULL) {
+  public function __construct(Connection $connection, CacheTagsChecksumInterface $checksum_provider) {
     $this->connection = $connection;
     $this->checksumProvider = $checksum_provider;
-    $this->settings = $settings ?: Settings::getInstance();
   }
 
   /**
@@ -71,7 +61,7 @@ public function get($bin) {
    *   DatabaseBackend::DEFAULT_MAX_ROWS.
    */
   protected function getMaxRowsForBin($bin) {
-    $max_rows_settings = $this->settings->get('database_cache_max_rows');
+    $max_rows_settings = Settings::get('database_cache_max_rows');
     // First, look for a cache bin specific setting.
     if (isset($max_rows_settings['bins'][$bin])) {
       $max_rows = $max_rows_settings['bins'][$bin];
diff --git a/core/lib/Drupal/Core/Database/ReplicaKillSwitch.php b/core/lib/Drupal/Core/Database/ReplicaKillSwitch.php
index d5ac045d8a..a2904e00a1 100644
--- a/core/lib/Drupal/Core/Database/ReplicaKillSwitch.php
+++ b/core/lib/Drupal/Core/Database/ReplicaKillSwitch.php
@@ -14,13 +14,6 @@
  */
 class ReplicaKillSwitch implements EventSubscriberInterface {
 
-  /**
-   * The settings object.
-   *
-   * @var \Drupal\Core\Site\Settings
-   */
-  protected $settings;
-
   /**
    * The time service.
    *
@@ -38,15 +31,12 @@ class ReplicaKillSwitch implements EventSubscriberInterface {
   /**
    * Constructs a ReplicaKillSwitch object.
    *
-   * @param \Drupal\Core\Site\Settings $settings
-   *   The settings object.
    * @param \Drupal\Component\Datetime\TimeInterface $time
    *   The time service.
    * @param \Symfony\Component\HttpFoundation\Session\SessionInterface $session
    *   The session.
    */
-  public function __construct(Settings $settings, TimeInterface $time, SessionInterface $session) {
-    $this->settings = $settings;
+  public function __construct(TimeInterface $time, SessionInterface $session) {
     $this->time = $time;
     $this->session = $session;
   }
@@ -64,7 +54,7 @@ public function trigger() {
       // Five minutes is long enough to allow the replica to break and resume
       // interrupted replication without causing problems on the Drupal site
       // from the old data.
-      $duration = $this->settings->get('maximum_replication_lag', 300);
+      $duration = Settings::get('maximum_replication_lag', 300);
       // Set session variable with amount of time to delay before using replica.
       $this->session->set('ignore_replica_server', $this->time->getRequestTime() + $duration);
     }
diff --git a/core/lib/Drupal/Core/EventSubscriber/ExcludedModulesEventSubscriber.php b/core/lib/Drupal/Core/EventSubscriber/ExcludedModulesEventSubscriber.php
index 4f18c888dd..0d9babac3d 100644
--- a/core/lib/Drupal/Core/EventSubscriber/ExcludedModulesEventSubscriber.php
+++ b/core/lib/Drupal/Core/EventSubscriber/ExcludedModulesEventSubscriber.php
@@ -14,7 +14,7 @@
 final class ExcludedModulesEventSubscriber implements EventSubscriberInterface {
 
   /**
-   * The key in settings and state for listing excluded modules.
+   * The key in Drupal settings and state for listing excluded modules.
    *
    * @var string
    */
@@ -25,11 +25,6 @@ final class ExcludedModulesEventSubscriber implements EventSubscriberInterface {
    */
   private $activeStorage;
 
-  /**
-   * @var \Drupal\Core\Site\Settings
-   */
-  private $settings;
-
   /**
    * @var \Drupal\Core\Config\ConfigManagerInterface
    */
@@ -40,14 +35,11 @@ final class ExcludedModulesEventSubscriber implements EventSubscriberInterface {
    *
    * @param \Drupal\Core\Config\StorageInterface $active_storage
    *   The active config storage.
-   * @param \Drupal\Core\Site\Settings $settings
-   *   The Drupal settings.
    * @param \Drupal\Core\Config\ConfigManagerInterface $manager
    *   The config manager.
    */
-  public function __construct(StorageInterface $active_storage, Settings $settings, ConfigManagerInterface $manager) {
+  public function __construct(StorageInterface $active_storage, ConfigManagerInterface $manager) {
     $this->activeStorage = $active_storage;
-    $this->settings = $settings;
     $this->manager = $manager;
   }
 
@@ -145,7 +137,7 @@ public function onConfigTransformExport(StorageTransformEvent $event) {
    *   An array of module names.
    */
   private function getExcludedModules() {
-    return $this->settings->get(self::EXCLUDED_MODULES_KEY, []);
+    return Settings::get(self::EXCLUDED_MODULES_KEY, []);
   }
 
   /**
diff --git a/core/lib/Drupal/Core/File/FileSystem.php b/core/lib/Drupal/Core/File/FileSystem.php
index 02175f9e10..3602dda4bb 100644
--- a/core/lib/Drupal/Core/File/FileSystem.php
+++ b/core/lib/Drupal/Core/File/FileSystem.php
@@ -15,7 +15,6 @@
 use Drupal\Core\StreamWrapper\PublicStream;
 use Drupal\Core\StreamWrapper\StreamWrapperManager;
 use Drupal\Core\StreamWrapper\StreamWrapperManagerInterface;
-use Psr\Log\LoggerInterface;
 
 /**
  * Provides helpers to operate on files and stream wrappers.
@@ -32,13 +31,6 @@ class FileSystem implements FileSystemInterface {
    */
   const CHMOD_FILE = 0664;
 
-  /**
-   * The site settings.
-   *
-   * @var \Drupal\Core\Site\Settings
-   */
-  protected $settings;
-
   /**
    * The file logger channel.
    *
@@ -58,14 +50,11 @@ class FileSystem implements FileSystemInterface {
    *
    * @param \Drupal\Core\StreamWrapper\StreamWrapperManagerInterface $stream_wrapper_manager
    *   The stream wrapper manager.
-   * @param \Drupal\Core\Site\Settings $settings
-   *   The site settings.
    * @param \Psr\Log\LoggerInterface $logger
    *   The file logger channel.
    */
-  public function __construct(StreamWrapperManagerInterface $stream_wrapper_manager, Settings $settings, LoggerInterface $logger) {
+  public function __construct(StreamWrapperManagerInterface $stream_wrapper_manager, $logger) {
     $this->streamWrapperManager = $stream_wrapper_manager;
-    $this->settings = $settings;
     $this->logger = $logger;
   }
 
@@ -95,10 +84,10 @@ public function moveUploadedFile($filename, $uri) {
   public function chmod($uri, $mode = NULL) {
     if (!isset($mode)) {
       if (is_dir($uri)) {
-        $mode = $this->settings->get('file_chmod_directory', static::CHMOD_DIRECTORY);
+        $mode = Settings::get('file_chmod_directory', static::CHMOD_DIRECTORY);
       }
       else {
-        $mode = $this->settings->get('file_chmod_file', static::CHMOD_FILE);
+        $mode = Settings::get('file_chmod_file', static::CHMOD_FILE);
       }
     }
 
@@ -179,7 +168,7 @@ public function basename($uri, $suffix = NULL) {
    */
   public function mkdir($uri, $mode = NULL, $recursive = FALSE, $context = NULL) {
     if (!isset($mode)) {
-      $mode = $this->settings->get('file_chmod_directory', static::CHMOD_DIRECTORY);
+      $mode = Settings::get('file_chmod_directory', static::CHMOD_DIRECTORY);
     }
 
     // If the URI has a scheme, don't override the umask - schemes can handle
@@ -628,7 +617,7 @@ public function createFilename($basename, $directory) {
    */
   public function getTempDirectory() {
     // Use settings.
-    $temporary_directory = $this->settings->get('file_temp_path');
+    $temporary_directory = Settings::get('file_temp_path');
     if (!empty($temporary_directory)) {
       return $temporary_directory;
     }
@@ -669,7 +658,7 @@ public function scanDirectory($dir, $mask, array $options = []) {
     // example, node_modules and bower_components. Ignoring irrelevant
     // directories is a performance boost.
     if (!isset($options['nomask'])) {
-      $ignore_directories = $this->settings->get('file_scan_ignore_directories', []);
+      $ignore_directories = Settings::get('file_scan_ignore_directories', []);
       array_walk($ignore_directories, function (&$value) {
         $value = preg_quote($value, '/');
       });
diff --git a/core/lib/Drupal/Core/Queue/QueueFactory.php b/core/lib/Drupal/Core/Queue/QueueFactory.php
index cfb072538a..8f6d282e7f 100644
--- a/core/lib/Drupal/Core/Queue/QueueFactory.php
+++ b/core/lib/Drupal/Core/Queue/QueueFactory.php
@@ -20,20 +20,6 @@ class QueueFactory implements ContainerAwareInterface {
    */
   protected $queues = [];
 
-  /**
-   * The settings object.
-   *
-   * @var \Drupal\Core\Site\Settings
-   */
-  protected $settings;
-
-  /**
-   * Constructs a queue factory.
-   */
-  public function __construct(Settings $settings) {
-    $this->settings = $settings;
-  }
-
   /**
    * Constructs a new queue.
    *
@@ -51,12 +37,12 @@ public function get($name, $reliable = FALSE) {
     if (!isset($this->queues[$name])) {
       // If it is a reliable queue, check the specific settings first.
       if ($reliable) {
-        $service_name = $this->settings->get('queue_reliable_service_' . $name);
+        $service_name = Settings::get('queue_reliable_service_' . $name);
       }
       // If no reliable queue was defined, check the service and global
       // settings, fall back to queue.database.
       if (empty($service_name)) {
-        $service_name = $this->settings->get('queue_service_' . $name, $this->settings->get('queue_default', 'queue.database'));
+        $service_name = Settings::get('queue_service_' . $name, Settings::get('queue_default', 'queue.database'));
       }
       $this->queues[$name] = $this->container->get($service_name)->get($name);
     }
diff --git a/core/lib/Drupal/Core/Session/MetadataBag.php b/core/lib/Drupal/Core/Session/MetadataBag.php
index be0017177a..ac5724f6e7 100644
--- a/core/lib/Drupal/Core/Session/MetadataBag.php
+++ b/core/lib/Drupal/Core/Session/MetadataBag.php
@@ -18,12 +18,9 @@ class MetadataBag extends SymfonyMetadataBag {
 
   /**
    * Constructs a new metadata bag instance.
-   *
-   * @param \Drupal\Core\Site\Settings $settings
-   *   The settings instance.
    */
-  public function __construct(Settings $settings) {
-    $update_threshold = $settings->get('session_write_interval', 180);
+  public function __construct() {
+    $update_threshold = Settings::get('session_write_interval', 180);
     parent::__construct('_sf2_meta', $update_threshold);
   }
 
diff --git a/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php b/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php
index 9e3c6f7790..dffd5ad5ab 100644
--- a/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php
+++ b/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php
@@ -19,24 +19,14 @@ class ReverseProxyMiddleware implements HttpKernelInterface {
    */
   protected $httpKernel;
 
-  /**
-   * The site settings.
-   *
-   * @var \Drupal\Core\Site\Settings
-   */
-  protected $settings;
-
   /**
    * Constructs a ReverseProxyMiddleware object.
    *
    * @param \Symfony\Component\HttpKernel\HttpKernelInterface $http_kernel
    *   The decorated kernel.
-   * @param \Drupal\Core\Site\Settings $settings
-   *   The site settings.
    */
-  public function __construct(HttpKernelInterface $http_kernel, Settings $settings) {
+  public function __construct(HttpKernelInterface $http_kernel) {
     $this->httpKernel = $http_kernel;
-    $this->settings = $settings;
   }
 
   /**
@@ -44,7 +34,7 @@ public function __construct(HttpKernelInterface $http_kernel, Settings $settings
    */
   public function handle(Request $request, $type = self::MAIN_REQUEST, $catch = TRUE): Response {
     // Initialize proxy settings.
-    static::setSettingsOnRequest($request, $this->settings);
+    static::setSettingsOnRequest($request, Settings::getInstance());
     return $this->httpKernel->handle($request, $type, $catch);
   }
 
diff --git a/core/lib/Drupal/Core/StringTranslation/Translator/CustomStrings.php b/core/lib/Drupal/Core/StringTranslation/Translator/CustomStrings.php
index 286ab61b1d..6986548003 100644
--- a/core/lib/Drupal/Core/StringTranslation/Translator/CustomStrings.php
+++ b/core/lib/Drupal/Core/StringTranslation/Translator/CustomStrings.php
@@ -3,7 +3,6 @@
 namespace Drupal\Core\StringTranslation\Translator;
 
 use Drupal\Core\Site\Settings;
-use Drupal\Core\DependencyInjection\DependencySerializationTrait;
 
 /**
  * String translator using overrides from variables.
@@ -13,31 +12,11 @@
  */
 class CustomStrings extends StaticTranslation {
 
-  use DependencySerializationTrait;
-
-  /**
-   * The settings read only object.
-   *
-   * @var \Drupal\Core\Site\Settings
-   */
-  protected $settings;
-
-  /**
-   * Constructs a CustomStrings object.
-   *
-   * @param \Drupal\Core\Site\Settings $settings
-   *   The settings read only object.
-   */
-  public function __construct(Settings $settings) {
-    parent::__construct();
-    $this->settings = $settings;
-  }
-
   /**
    * {@inheritdoc}
    */
   protected function getLanguage($langcode) {
-    return $this->settings->get('locale_custom_strings_' . $langcode, []);
+    return Settings::get('locale_custom_strings_' . $langcode, []);
   }
 
 }
diff --git a/core/modules/config/src/Form/ConfigImportForm.php b/core/modules/config/src/Form/ConfigImportForm.php
index 74c73b8d99..2fc85a9392 100644
--- a/core/modules/config/src/Form/ConfigImportForm.php
+++ b/core/modules/config/src/Form/ConfigImportForm.php
@@ -31,13 +31,6 @@ class ConfigImportForm extends FormBase {
    */
   protected $fileSystem;
 
-  /**
-   * The settings object.
-   *
-   * @var \Drupal\Core\Site\Settings
-   */
-  protected $settings;
-
   /**
    * Constructs a new ConfigImportForm.
    *
@@ -45,13 +38,10 @@ class ConfigImportForm extends FormBase {
    *   The configuration storage.
    * @param \Drupal\Core\File\FileSystemInterface $file_system
    *   The file system service.
-   * @param \Drupal\Core\Site\Settings $settings
-   *   The settings object.
    */
-  public function __construct(StorageInterface $config_storage, FileSystemInterface $file_system, Settings $settings) {
+  public function __construct(StorageInterface $config_storage, FileSystemInterface $file_system) {
     $this->configStorage = $config_storage;
     $this->fileSystem = $file_system;
-    $this->settings = $settings;
   }
 
   /**
@@ -60,8 +50,7 @@ public function __construct(StorageInterface $config_storage, FileSystemInterfac
   public static function create(ContainerInterface $container) {
     return new static(
       $container->get('config.storage.sync'),
-      $container->get('file_system'),
-      $container->get('settings')
+      $container->get('file_system')
     );
   }
 
@@ -76,7 +65,7 @@ public function getFormId() {
    * {@inheritdoc}
    */
   public function buildForm(array $form, FormStateInterface $form_state) {
-    $directory = $this->settings->get('config_sync_directory');
+    $directory = Settings::get('config_sync_directory');
     $directory_is_writable = is_writable($directory);
     if (!$directory_is_writable) {
       $this->messenger()->addError($this->t('The directory %directory is not writable.', ['%directory' => $directory]));
@@ -123,7 +112,7 @@ public function submitForm(array &$form, FormStateInterface $form_state) {
         foreach ($archiver->listContent() as $file) {
           $files[] = $file['filename'];
         }
-        $archiver->extractList($files, $this->settings->get('config_sync_directory'), '', FALSE, FALSE);
+        $archiver->extractList($files, Settings::get('config_sync_directory'), '', FALSE, FALSE);
         $this->messenger()->addStatus($this->t('Your configuration files were successfully uploaded and are ready for import.'));
         $form_state->setRedirect('config.sync');
       }
diff --git a/core/modules/language/language.services.yml b/core/modules/language/language.services.yml
index 4fda6484c1..e1e2fff078 100644
--- a/core/modules/language/language.services.yml
+++ b/core/modules/language/language.services.yml
@@ -4,7 +4,7 @@ services:
     arguments: ['@container.namespaces', '@cache.discovery', '@module_handler']
   language_negotiator:
     class: Drupal\language\LanguageNegotiator
-    arguments: ['@language_manager', '@plugin.manager.language_negotiation_method', '@config.factory', '@settings', '@request_stack']
+    arguments: ['@language_manager', '@plugin.manager.language_negotiation_method', '@config.factory', '@request_stack']
     calls:
       - [initLanguageManager]
   language.config_subscriber:
diff --git a/core/modules/language/src/LanguageNegotiator.php b/core/modules/language/src/LanguageNegotiator.php
index c4e083ab1a..14519287d2 100644
--- a/core/modules/language/src/LanguageNegotiator.php
+++ b/core/modules/language/src/LanguageNegotiator.php
@@ -5,7 +5,6 @@
 use Drupal\Component\Plugin\PluginManagerInterface;
 use Drupal\Core\Config\ConfigFactoryInterface;
 use Drupal\Core\Session\AccountInterface;
-use Drupal\Core\Site\Settings;
 use Drupal\language\Plugin\LanguageNegotiation\LanguageNegotiationUI;
 use Symfony\Component\HttpFoundation\RequestStack;
 
@@ -35,13 +34,6 @@ class LanguageNegotiator implements LanguageNegotiatorInterface {
    */
   protected $configFactory;
 
-  /**
-   * The settings instance.
-   *
-   * @var \Drupal\Core\Site\Settings
-   */
-  protected $settings;
-
   /**
    * The request stack object.
    *
@@ -79,16 +71,13 @@ class LanguageNegotiator implements LanguageNegotiatorInterface {
    *   The language negotiation methods plugin manager
    * @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory
    *   The configuration factory.
-   * @param \Drupal\Core\Site\Settings $settings
-   *   The settings instance.
    * @param \Symfony\Component\HttpFoundation\RequestStack $requestStack
    *   The request stack service.
    */
-  public function __construct(ConfigurableLanguageManagerInterface $language_manager, PluginManagerInterface $negotiator_manager, ConfigFactoryInterface $config_factory, Settings $settings, RequestStack $requestStack) {
+  public function __construct(ConfigurableLanguageManagerInterface $language_manager, PluginManagerInterface $negotiator_manager, ConfigFactoryInterface $config_factory, RequestStack $requestStack) {
     $this->languageManager = $language_manager;
     $this->negotiatorManager = $negotiator_manager;
     $this->configFactory = $config_factory;
-    $this->settings = $settings;
     $this->requestStack = $requestStack;
   }
 
diff --git a/core/modules/system/src/SecurityAdvisories/SecurityAdvisoriesFetcher.php b/core/modules/system/src/SecurityAdvisories/SecurityAdvisoriesFetcher.php
index b8b0a53236..5b0b685cb6 100644
--- a/core/modules/system/src/SecurityAdvisories/SecurityAdvisoriesFetcher.php
+++ b/core/modules/system/src/SecurityAdvisories/SecurityAdvisoriesFetcher.php
@@ -61,13 +61,6 @@ final class SecurityAdvisoriesFetcher {
    */
   protected $logger;
 
-  /**
-   * Whether to fall back to HTTP if the HTTPS request fails.
-   *
-   * @var bool
-   */
-  protected $withHttpFallback;
-
   /**
    * Constructs a new SecurityAdvisoriesFetcher object.
    *
@@ -85,10 +78,8 @@ final class SecurityAdvisoriesFetcher {
    *   The profile extension list.
    * @param \Psr\Log\LoggerInterface $logger
    *   The logger.
-   * @param \Drupal\Core\Site\Settings $settings
-   *   The settings instance.
    */
-  public function __construct(ConfigFactoryInterface $config_factory, KeyValueExpirableFactoryInterface $key_value_factory, ClientInterface $client, ModuleExtensionList $module_list, ThemeExtensionList $theme_list, ProfileExtensionList $profile_list, LoggerInterface $logger, Settings $settings) {
+  public function __construct(ConfigFactoryInterface $config_factory, KeyValueExpirableFactoryInterface $key_value_factory, ClientInterface $client, ModuleExtensionList $module_list, ThemeExtensionList $theme_list, ProfileExtensionList $profile_list, LoggerInterface $logger) {
     $this->config = $config_factory->get('system.advisories');
     $this->keyValueExpirable = $key_value_factory->get('system');
     $this->httpClient = $client;
@@ -96,7 +87,6 @@ public function __construct(ConfigFactoryInterface $config_factory, KeyValueExpi
     $this->extensionLists['theme'] = $theme_list;
     $this->extensionLists['profile'] = $profile_list;
     $this->logger = $logger;
-    $this->withHttpFallback = $settings->get('update_fetch_with_http_fallback', FALSE);
   }
 
   /**
@@ -311,7 +301,8 @@ protected function isApplicable(SecurityAdvisory $sa): bool {
    */
   protected function doRequest(int $timeout): string {
     $options = [RequestOptions::TIMEOUT => $timeout];
-    if (!$this->withHttpFallback) {
+    $withHttpFallback = Settings::get('update_fetch_with_http_fallback', FALSE);
+    if (!$withHttpFallback) {
       // If not using an HTTP fallback just use HTTPS and do not catch any
       // exceptions.
       $response = $this->httpClient->get('https://updates.drupal.org/psa.json', $options);
diff --git a/core/modules/system/system.services.yml b/core/modules/system/system.services.yml
index b1d6bdfa78..a6f7ef010c 100644
--- a/core/modules/system/system.services.yml
+++ b/core/modules/system/system.services.yml
@@ -58,7 +58,7 @@ services:
     arguments: ['system']
   system.sa_fetcher:
     class: Drupal\system\SecurityAdvisories\SecurityAdvisoriesFetcher
-    arguments: ['@config.factory', '@keyvalue.expirable', '@http_client', '@extension.list.module', '@extension.list.theme', '@extension.list.profile', '@logger.channel.system', '@settings']
+    arguments: ['@config.factory', '@keyvalue.expirable', '@http_client', '@extension.list.module', '@extension.list.theme', '@extension.list.profile', '@logger.channel.system']
   system.advisories_config_subscriber:
     class: Drupal\system\EventSubscriber\AdvisoriesConfigSubscriber
     arguments: ['@system.sa_fetcher']
diff --git a/core/modules/system/tests/modules/error_service_test/error_service_test.services.yml b/core/modules/system/tests/modules/error_service_test/error_service_test.services.yml
index c2a56334ca..ef874e5847 100644
--- a/core/modules/system/tests/modules/error_service_test/error_service_test.services.yml
+++ b/core/modules/system/tests/modules/error_service_test/error_service_test.services.yml
@@ -1,7 +1,6 @@
 services:
   http_middleware.monkeys:
     class: Drupal\error_service_test\MonkeysInTheControlRoom
-    arguments: ['@settings']
     tags:
       - { name: http_middleware, priority: 400 }
   # Set up a service with a missing class dependency.
diff --git a/core/modules/system/tests/modules/error_service_test/src/MonkeysInTheControlRoom.php b/core/modules/system/tests/modules/error_service_test/src/MonkeysInTheControlRoom.php
index 7df8d810f9..d32584c11f 100644
--- a/core/modules/system/tests/modules/error_service_test/src/MonkeysInTheControlRoom.php
+++ b/core/modules/system/tests/modules/error_service_test/src/MonkeysInTheControlRoom.php
@@ -26,12 +26,9 @@ class MonkeysInTheControlRoom implements HttpKernelInterface {
    *
    * @param \Symfony\Component\HttpKernel\HttpKernelInterface $app
    *   The wrapper HTTP kernel.
-   * @param \Drupal\Core\Site\Settings $settings
-   *   The settings object.
    */
-  public function __construct(HttpKernelInterface $app, Settings $settings) {
+  public function __construct(HttpKernelInterface $app) {
     $this->app = $app;
-    $this->settings = $settings;
   }
 
   /**
@@ -62,7 +59,7 @@ public function handle(Request $request, $type = self::MAIN_REQUEST, $catch = TR
       throw new \Exception('Deforestation');
     }
 
-    if ($this->settings->get('teapots', FALSE) && class_exists('\TypeError')) {
+    if (Settings::get('teapots', FALSE) && class_exists('\TypeError')) {
       try {
         $return = $this->app->handle($request, $type, $catch);
       }
diff --git a/core/modules/update/src/Access/UpdateManagerAccessCheck.php b/core/modules/update/src/Access/UpdateManagerAccessCheck.php
index 64fdeb0167..cb072e0ee1 100644
--- a/core/modules/update/src/Access/UpdateManagerAccessCheck.php
+++ b/core/modules/update/src/Access/UpdateManagerAccessCheck.php
@@ -11,23 +11,6 @@
  */
 class UpdateManagerAccessCheck implements AccessInterface {
 
-  /**
-   * Settings Service.
-   *
-   * @var \Drupal\Core\Site\Settings
-   */
-  protected $settings;
-
-  /**
-   * Constructs an UpdateManagerAccessCheck object.
-   *
-   * @param \Drupal\Core\Site\Settings $settings
-   *   The read-only settings container.
-   */
-  public function __construct(Settings $settings) {
-    $this->settings = $settings;
-  }
-
   /**
    * Checks access.
    *
@@ -37,7 +20,7 @@ public function __construct(Settings $settings) {
   public function access() {
     // Uncacheable because the access result depends on a Settings key-value
     // pair, and can therefore change at any time.
-    return AccessResult::allowedIf($this->settings->get('allow_authorize_operations', TRUE))->setCacheMaxAge(0);
+    return AccessResult::allowedIf(Settings::get('allow_authorize_operations', TRUE))->setCacheMaxAge(0);
   }
 
 }
diff --git a/core/modules/update/src/UpdateFetcher.php b/core/modules/update/src/UpdateFetcher.php
index 3bec19dc9e..ace4e5e86f 100644
--- a/core/modules/update/src/UpdateFetcher.php
+++ b/core/modules/update/src/UpdateFetcher.php
@@ -55,14 +55,12 @@ class UpdateFetcher implements UpdateFetcherInterface {
    *   The config factory.
    * @param \GuzzleHttp\ClientInterface $http_client
    *   A Guzzle client object.
-   * @param \Drupal\Core\Site\Settings $settings
-   *   The settings instance.
    */
-  public function __construct(ConfigFactoryInterface $config_factory, ClientInterface $http_client, Settings $settings) {
+  public function __construct(ConfigFactoryInterface $config_factory, ClientInterface $http_client) {
     $this->fetchUrl = $config_factory->get('update.settings')->get('fetch.url');
     $this->httpClient = $http_client;
     $this->updateSettings = $config_factory->get('update.settings');
-    $this->withHttpFallback = $settings->get('update_fetch_with_http_fallback', FALSE);
+    $this->withHttpFallback = Settings::get('update_fetch_with_http_fallback', FALSE);
   }
 
   /**
diff --git a/core/modules/update/update.services.yml b/core/modules/update/update.services.yml
index d243fedcdb..35d56e7a13 100644
--- a/core/modules/update/update.services.yml
+++ b/core/modules/update/update.services.yml
@@ -1,7 +1,6 @@
 services:
   access_check.update.manager_access:
     class: Drupal\update\Access\UpdateManagerAccessCheck
-    arguments: ['@settings']
     tags:
       - { name: access_check, applies_to: _access_update_manager }
   update.manager:
@@ -12,7 +11,7 @@ services:
     arguments: ['@config.factory', '@queue', '@update.fetcher', '@state', '@private_key', '@keyvalue', '@keyvalue.expirable']
   update.fetcher:
     class: Drupal\update\UpdateFetcher
-    arguments: ['@config.factory', '@http_client', '@settings']
+    arguments: ['@config.factory', '@http_client']
   update.root:
     class: Drupal\update\UpdateRoot
     arguments: ['@kernel', '@request_stack']
diff --git a/core/phpstan-baseline.neon b/core/phpstan-baseline.neon
index 8a040d875f..5889ab39b7 100644
--- a/core/phpstan-baseline.neon
+++ b/core/phpstan-baseline.neon
@@ -1488,11 +1488,6 @@ parameters:
 			count: 1
 			path: modules/system/tests/modules/error_service_test/src/LonelyMonkeyClass.php
 
-		-
-			message: "#^Access to an undefined property Drupal\\\\error_service_test\\\\MonkeysInTheControlRoom\\:\\:\\$settings\\.$#"
-			count: 2
-			path: modules/system/tests/modules/error_service_test/src/MonkeysInTheControlRoom.php
-
 		-
 			message: "#^Result of function usleep \\(void\\) is used\\.$#"
 			count: 1
diff --git a/core/tests/Drupal/FunctionalTests/Bootstrap/UncaughtExceptionTest.php b/core/tests/Drupal/FunctionalTests/Bootstrap/UncaughtExceptionTest.php
index 7da9192556..3cbb43fb98 100644
--- a/core/tests/Drupal/FunctionalTests/Bootstrap/UncaughtExceptionTest.php
+++ b/core/tests/Drupal/FunctionalTests/Bootstrap/UncaughtExceptionTest.php
@@ -261,7 +261,7 @@ public function testLoggerException() {
     $this->assertStringContainsString('Failed to log error', $errors[0], 'The error handling logs when an error could not be logged to the logger.');
 
     $expected_path = \Drupal::root() . '/core/modules/system/tests/modules/error_service_test/src/MonkeysInTheControlRoom.php';
-    $expected_line = 62;
+    $expected_line = 59;
     $expected_entry = "Failed to log error: Exception: Deforestation in Drupal\\error_service_test\\MonkeysInTheControlRoom->handle() (line {$expected_line} of {$expected_path})";
     $this->assertStringContainsString($expected_entry, $errors[0], 'Original error logged to the PHP error log when an exception is thrown by a logger');
 
diff --git a/core/tests/Drupal/KernelTests/Core/Cache/CacheCollectorTest.php b/core/tests/Drupal/KernelTests/Core/Cache/CacheCollectorTest.php
index 164accb216..45836d3876 100644
--- a/core/tests/Drupal/KernelTests/Core/Cache/CacheCollectorTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Cache/CacheCollectorTest.php
@@ -22,7 +22,6 @@ public function register(ContainerBuilder $container) {
     // Change container to database cache backends.
     $container
       ->register('cache_factory', 'Drupal\Core\Cache\CacheFactory')
-      ->addArgument(new Reference('settings'))
       ->addMethodCall('setContainer', [new Reference('service_container')]);
 
     // Change container to use database lock backends.
diff --git a/core/tests/Drupal/KernelTests/Core/Cache/DatabaseBackendTagTest.php b/core/tests/Drupal/KernelTests/Core/Cache/DatabaseBackendTagTest.php
index f902f2be5e..d1b31261f7 100644
--- a/core/tests/Drupal/KernelTests/Core/Cache/DatabaseBackendTagTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Cache/DatabaseBackendTagTest.php
@@ -30,7 +30,6 @@ public function register(ContainerBuilder $container) {
     // Change container to database cache backends.
     $container
       ->register('cache_factory', 'Drupal\Core\Cache\CacheFactory')
-      ->addArgument(new Reference('settings'))
       ->addMethodCall('setContainer', [new Reference('service_container')]);
   }
 
diff --git a/core/tests/Drupal/KernelTests/Core/File/FileSystemTempDirectoryTest.php b/core/tests/Drupal/KernelTests/Core/File/FileSystemTempDirectoryTest.php
index bfa8503b22..a9262115b2 100644
--- a/core/tests/Drupal/KernelTests/Core/File/FileSystemTempDirectoryTest.php
+++ b/core/tests/Drupal/KernelTests/Core/File/FileSystemTempDirectoryTest.php
@@ -35,8 +35,7 @@ protected function setUp(): void {
     parent::setUp();
     $stream_wrapper_manager = $this->container->get('stream_wrapper_manager');
     $logger = $this->container->get('logger.channel.file');
-    $settings = $this->container->get('settings');
-    $this->fileSystem = new FileSystem($stream_wrapper_manager, $settings, $logger);
+    $this->fileSystem = new FileSystem($stream_wrapper_manager, $logger);
   }
 
   /**
diff --git a/core/tests/Drupal/Tests/Core/Cache/CacheFactoryTest.php b/core/tests/Drupal/Tests/Core/Cache/CacheFactoryTest.php
index 2876d7177b..a595b10d07 100644
--- a/core/tests/Drupal/Tests/Core/Cache/CacheFactoryTest.php
+++ b/core/tests/Drupal/Tests/Core/Cache/CacheFactoryTest.php
@@ -20,8 +20,8 @@ class CacheFactoryTest extends UnitTestCase {
    * @covers ::get
    */
   public function testCacheFactoryWithDefaultSettings() {
-    $settings = new Settings([]);
-    $cache_factory = new CacheFactory($settings);
+    new Settings([]);
+    $cache_factory = new CacheFactory();
 
     $container = new ContainerBuilder();
     $cache_factory->setContainer($container);
@@ -46,12 +46,12 @@ public function testCacheFactoryWithDefaultSettings() {
    * @covers ::get
    */
   public function testCacheFactoryWithCustomizedDefaultBackend() {
-    $settings = new Settings([
+    new Settings([
       'cache' => [
         'default' => 'cache.backend.custom',
       ],
     ]);
-    $cache_factory = new CacheFactory($settings);
+    $cache_factory = new CacheFactory();
 
     $container = new ContainerBuilder();
     $cache_factory->setContainer($container);
@@ -77,7 +77,7 @@ public function testCacheFactoryWithCustomizedDefaultBackend() {
    */
   public function testCacheFactoryWithDefaultBinBackend() {
     // Ensure the default bin backends are used before the configured default.
-    $settings = new Settings([
+    new Settings([
       'cache' => [
         'default' => 'cache.backend.unused',
       ],
@@ -87,7 +87,7 @@ public function testCacheFactoryWithDefaultBinBackend() {
       'render' => 'cache.backend.custom',
     ];
 
-    $cache_factory = new CacheFactory($settings, $default_bin_backends);
+    $cache_factory = new CacheFactory($default_bin_backends);
 
     $container = new ContainerBuilder();
     $cache_factory->setContainer($container);
@@ -114,7 +114,7 @@ public function testCacheFactoryWithDefaultBinBackend() {
   public function testCacheFactoryWithSpecifiedPerBinBackend() {
     // Ensure the per-bin configuration is used before the configured default
     // and per-bin defaults.
-    $settings = new Settings([
+    new Settings([
       'cache' => [
         'default' => 'cache.backend.unused',
         'bins' => [
@@ -127,7 +127,7 @@ public function testCacheFactoryWithSpecifiedPerBinBackend() {
       'render' => 'cache.backend.unused',
     ];
 
-    $cache_factory = new CacheFactory($settings, $default_bin_backends);
+    $cache_factory = new CacheFactory($default_bin_backends);
 
     $container = new ContainerBuilder();
     $cache_factory->setContainer($container);
diff --git a/core/tests/Drupal/Tests/Core/File/FileSystemTest.php b/core/tests/Drupal/Tests/Core/File/FileSystemTest.php
index aa4ec558a8..c870c1c352 100644
--- a/core/tests/Drupal/Tests/Core/File/FileSystemTest.php
+++ b/core/tests/Drupal/Tests/Core/File/FileSystemTest.php
@@ -4,7 +4,6 @@
 
 use Drupal\Core\File\Exception\FileException;
 use Drupal\Core\File\FileSystem;
-use Drupal\Core\Site\Settings;
 use Drupal\Core\StreamWrapper\StreamWrapperManagerInterface;
 use Drupal\Tests\UnitTestCase;
 use org\bovigo\vfs\vfsStream;
@@ -41,10 +40,9 @@ class FileSystemTest extends UnitTestCase {
   protected function setUp(): void {
     parent::setUp();
 
-    $settings = new Settings([]);
     $this->streamWrapperManager = $this->createMock(StreamWrapperManagerInterface::class);
     $this->logger = $this->createMock('Psr\Log\LoggerInterface');
-    $this->fileSystem = new FileSystem($this->streamWrapperManager, $settings, $this->logger);
+    $this->fileSystem = new FileSystem($this->streamWrapperManager, $this->logger);
   }
 
   /**
