diff --git a/typo3/sysext/adminpanel/Classes/Controller/AjaxController.php b/typo3/sysext/adminpanel/Classes/Controller/AjaxController.php
index 6009e39602ecc681661f4f496bb493c43405c014..a4ab7554d161db2c3a4c9d1a39a354be7ce55de7 100644
--- a/typo3/sysext/adminpanel/Classes/Controller/AjaxController.php
+++ b/typo3/sysext/adminpanel/Classes/Controller/AjaxController.php
@@ -18,6 +18,7 @@ declare(strict_types=1);
 namespace TYPO3\CMS\Adminpanel\Controller;
 
 use Psr\Http\Message\ServerRequestInterface;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Adminpanel\Service\ConfigurationService;
 use TYPO3\CMS\Adminpanel\Service\ModuleLoader;
 use TYPO3\CMS\Core\Authentication\BackendUserAuthentication;
@@ -28,6 +29,7 @@ use TYPO3\CMS\Core\Http\JsonResponse;
  *
  * @internal
  */
+#[Autoconfigure(public: true)]
 class AjaxController
 {
     protected array $adminPanelModuleConfiguration;
diff --git a/typo3/sysext/adminpanel/Classes/Controller/MainController.php b/typo3/sysext/adminpanel/Classes/Controller/MainController.php
index 79d87919181b3977920ba9d0876af1b11300e3c2..7ac24c2d52dabe48c9b72daf321d09447282a00f 100644
--- a/typo3/sysext/adminpanel/Classes/Controller/MainController.php
+++ b/typo3/sysext/adminpanel/Classes/Controller/MainController.php
@@ -18,6 +18,7 @@ declare(strict_types=1);
 namespace TYPO3\CMS\Adminpanel\Controller;
 
 use Psr\Http\Message\ServerRequestInterface;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Adminpanel\ModuleApi\ConfigurableInterface;
 use TYPO3\CMS\Adminpanel\ModuleApi\DataProviderInterface;
 use TYPO3\CMS\Adminpanel\ModuleApi\ModuleDataStorageCollection;
@@ -45,6 +46,7 @@ use TYPO3\CMS\Fluid\View\StandaloneView;
  *
  * @internal
  */
+#[Autoconfigure(public: true)]
 class MainController
 {
     /** @var array<string, ModuleInterface> */
diff --git a/typo3/sysext/adminpanel/Classes/Modules/CacheModule.php b/typo3/sysext/adminpanel/Classes/Modules/CacheModule.php
index 5163f340b4afc1b4b86f59be7e4832af08b9282a..9e7356fc3ca8275c5908b174c2f8e19d4c319e9a 100644
--- a/typo3/sysext/adminpanel/Classes/Modules/CacheModule.php
+++ b/typo3/sysext/adminpanel/Classes/Modules/CacheModule.php
@@ -18,6 +18,7 @@ declare(strict_types=1);
 namespace TYPO3\CMS\Adminpanel\Modules;
 
 use Psr\Http\Message\ServerRequestInterface;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Adminpanel\ModuleApi\AbstractModule;
 use TYPO3\CMS\Adminpanel\ModuleApi\PageSettingsProviderInterface;
 use TYPO3\CMS\Adminpanel\ModuleApi\RequestEnricherInterface;
@@ -28,6 +29,7 @@ use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Fluid\View\StandaloneView;
 use TYPO3\CMS\Frontend\Cache\CacheInstruction;
 
+#[Autoconfigure(public: true)]
 class CacheModule extends AbstractModule implements PageSettingsProviderInterface, RequestEnricherInterface, ResourceProviderInterface
 {
     public function getIconIdentifier(): string
diff --git a/typo3/sysext/adminpanel/Classes/Modules/Debug/Events.php b/typo3/sysext/adminpanel/Classes/Modules/Debug/Events.php
index e64147405caf365765d68742962a88b8e0bfcc12..0b88b4e0864e0d2c7a45d206c2149d4021ff28a3 100644
--- a/typo3/sysext/adminpanel/Classes/Modules/Debug/Events.php
+++ b/typo3/sysext/adminpanel/Classes/Modules/Debug/Events.php
@@ -19,6 +19,7 @@ namespace TYPO3\CMS\Adminpanel\Modules\Debug;
 
 use Psr\EventDispatcher\EventDispatcherInterface;
 use Psr\Http\Message\ServerRequestInterface;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use Symfony\Component\VarDumper\Cloner\Data;
 use Symfony\Component\VarDumper\Cloner\VarCloner;
 use Symfony\Component\VarDumper\Dumper\AbstractDumper;
@@ -33,6 +34,7 @@ use TYPO3\CMS\Fluid\View\StandaloneView;
 /**
  * Shows all dispatched Events of the current request
  */
+#[Autoconfigure(public: true)]
 class Events extends AbstractSubModule implements DataProviderInterface
 {
     public function __construct(private readonly RequestId $requestId) {}
diff --git a/typo3/sysext/adminpanel/Classes/Modules/Debug/Log.php b/typo3/sysext/adminpanel/Classes/Modules/Debug/Log.php
index 7ea1f9f441b776459e939df7565fde5c2d08c0d5..05fede950d9768dd8e1fb80bf464b8fae3d76f8f 100644
--- a/typo3/sysext/adminpanel/Classes/Modules/Debug/Log.php
+++ b/typo3/sysext/adminpanel/Classes/Modules/Debug/Log.php
@@ -18,6 +18,7 @@ declare(strict_types=1);
 namespace TYPO3\CMS\Adminpanel\Modules\Debug;
 
 use Psr\Http\Message\ServerRequestInterface;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Adminpanel\Log\InMemoryLogWriter;
 use TYPO3\CMS\Adminpanel\ModuleApi\AbstractSubModule;
 use TYPO3\CMS\Adminpanel\ModuleApi\DataProviderInterface;
@@ -34,6 +35,7 @@ use TYPO3\CMS\Fluid\View\StandaloneView;
  *
  * @internal
  */
+#[Autoconfigure(public: true)]
 class Log extends AbstractSubModule implements DataProviderInterface, ModuleSettingsProviderInterface, RequestEnricherInterface
 {
     protected int $logLevel;
diff --git a/typo3/sysext/adminpanel/Classes/Modules/DebugModule.php b/typo3/sysext/adminpanel/Classes/Modules/DebugModule.php
index 6ff578f52171094a5f9684a00b63eaf9b9c14f42..719ac0fb4b43becfd38c1de2d02830039c02c953 100644
--- a/typo3/sysext/adminpanel/Classes/Modules/DebugModule.php
+++ b/typo3/sysext/adminpanel/Classes/Modules/DebugModule.php
@@ -17,6 +17,7 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Adminpanel\Modules;
 
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Adminpanel\Log\InMemoryLogWriter;
 use TYPO3\CMS\Adminpanel\ModuleApi\AbstractModule;
 use TYPO3\CMS\Adminpanel\ModuleApi\ShortInfoProviderInterface;
@@ -27,6 +28,7 @@ use TYPO3\CMS\Core\Utility\GeneralUtility;
 /**
  * Debug Module of the AdminPanel
  */
+#[Autoconfigure(public: true)]
 class DebugModule extends AbstractModule implements ShortInfoProviderInterface
 {
     public function getIdentifier(): string
diff --git a/typo3/sysext/adminpanel/Classes/Modules/Info/GeneralInformation.php b/typo3/sysext/adminpanel/Classes/Modules/Info/GeneralInformation.php
index 884ccb1106e7120fe43747c3abcf2f62040ad085..69b6d0e5691c8f3e85ae3b2d935ae1aadbfabda0 100644
--- a/typo3/sysext/adminpanel/Classes/Modules/Info/GeneralInformation.php
+++ b/typo3/sysext/adminpanel/Classes/Modules/Info/GeneralInformation.php
@@ -18,6 +18,7 @@ declare(strict_types=1);
 namespace TYPO3\CMS\Adminpanel\Modules\Info;
 
 use Psr\Http\Message\ServerRequestInterface;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Adminpanel\ModuleApi\AbstractSubModule;
 use TYPO3\CMS\Adminpanel\ModuleApi\DataProviderInterface;
 use TYPO3\CMS\Adminpanel\ModuleApi\ModuleData;
@@ -33,6 +34,7 @@ use TYPO3\CMS\Fluid\View\StandaloneView;
  *
  * @internal
  */
+#[Autoconfigure(public: true)]
 class GeneralInformation extends AbstractSubModule implements DataProviderInterface
 {
     public function __construct(
diff --git a/typo3/sysext/adminpanel/Classes/Modules/InfoModule.php b/typo3/sysext/adminpanel/Classes/Modules/InfoModule.php
index 645460f202ed4cabc9b51fa621264ff545899cc0..d04080e6bc9fd45465a4c9cdea172975b2fb3d51 100644
--- a/typo3/sysext/adminpanel/Classes/Modules/InfoModule.php
+++ b/typo3/sysext/adminpanel/Classes/Modules/InfoModule.php
@@ -17,6 +17,7 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Adminpanel\Modules;
 
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Adminpanel\ModuleApi\AbstractModule;
 use TYPO3\CMS\Adminpanel\ModuleApi\ShortInfoProviderInterface;
 use TYPO3\CMS\Core\TimeTracker\TimeTracker;
@@ -25,6 +26,7 @@ use TYPO3\CMS\Core\Utility\GeneralUtility;
 /**
  * Admin Panel Info Module
  */
+#[Autoconfigure(public: true)]
 class InfoModule extends AbstractModule implements ShortInfoProviderInterface
 {
     public function getIconIdentifier(): string
diff --git a/typo3/sysext/adminpanel/Classes/Modules/PreviewModule.php b/typo3/sysext/adminpanel/Classes/Modules/PreviewModule.php
index dd9c68d367b33a91bce7deef2ccba2e541f290c0..2a86901dfbd3a7984c7776bbc57fdc238730c3f7 100644
--- a/typo3/sysext/adminpanel/Classes/Modules/PreviewModule.php
+++ b/typo3/sysext/adminpanel/Classes/Modules/PreviewModule.php
@@ -20,6 +20,7 @@ namespace TYPO3\CMS\Adminpanel\Modules;
 use Psr\Http\Message\ServerRequestInterface;
 use Psr\Log\LoggerAwareInterface;
 use Psr\Log\LoggerAwareTrait;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Adminpanel\ModuleApi\AbstractModule;
 use TYPO3\CMS\Adminpanel\ModuleApi\OnSubmitActorInterface;
 use TYPO3\CMS\Adminpanel\ModuleApi\PageSettingsProviderInterface;
@@ -42,6 +43,7 @@ use TYPO3\CMS\Frontend\Cache\CacheInstruction;
 /**
  * Admin Panel Preview Module
  */
+#[Autoconfigure(public: true)]
 class PreviewModule extends AbstractModule implements RequestEnricherInterface, PageSettingsProviderInterface, ResourceProviderInterface, OnSubmitActorInterface, LoggerAwareInterface
 {
     use LoggerAwareTrait;
diff --git a/typo3/sysext/adminpanel/Classes/Modules/TsDebug/TypoScriptWaterfall.php b/typo3/sysext/adminpanel/Classes/Modules/TsDebug/TypoScriptWaterfall.php
index ddbc1b9394b0a669e27c3f47ae36c194c7a8870e..4864dca98b0caa49a3294d76e2bae459127da22d 100644
--- a/typo3/sysext/adminpanel/Classes/Modules/TsDebug/TypoScriptWaterfall.php
+++ b/typo3/sysext/adminpanel/Classes/Modules/TsDebug/TypoScriptWaterfall.php
@@ -18,6 +18,7 @@ declare(strict_types=1);
 namespace TYPO3\CMS\Adminpanel\Modules\TsDebug;
 
 use Psr\Http\Message\ServerRequestInterface;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Adminpanel\ModuleApi\AbstractSubModule;
 use TYPO3\CMS\Adminpanel\ModuleApi\ModuleData;
 use TYPO3\CMS\Adminpanel\ModuleApi\ModuleSettingsProviderInterface;
@@ -32,6 +33,7 @@ use TYPO3\CMS\Frontend\Cache\CacheInstruction;
 /**
  * @internal
  */
+#[Autoconfigure(public: true)]
 class TypoScriptWaterfall extends AbstractSubModule implements RequestEnricherInterface, ModuleSettingsProviderInterface
 {
     protected array $printConf = [
diff --git a/typo3/sysext/adminpanel/Classes/Modules/TsDebugModule.php b/typo3/sysext/adminpanel/Classes/Modules/TsDebugModule.php
index 149cebdea39203a698ad27a637fb2937ac7ed8d0..dbe23920628ecc5da5beb7efbd61c93247e11557 100644
--- a/typo3/sysext/adminpanel/Classes/Modules/TsDebugModule.php
+++ b/typo3/sysext/adminpanel/Classes/Modules/TsDebugModule.php
@@ -17,6 +17,7 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Adminpanel\Modules;
 
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Adminpanel\ModuleApi\AbstractModule;
 use TYPO3\CMS\Adminpanel\ModuleApi\ShortInfoProviderInterface;
 use TYPO3\CMS\Core\TimeTracker\TimeTracker;
@@ -25,6 +26,7 @@ use TYPO3\CMS\Core\Utility\GeneralUtility;
 /**
  * Admin Panel TypoScript Debug Module
  */
+#[Autoconfigure(public: true)]
 class TsDebugModule extends AbstractModule implements ShortInfoProviderInterface
 {
     public function getIdentifier(): string
diff --git a/typo3/sysext/adminpanel/Configuration/Services.yaml b/typo3/sysext/adminpanel/Configuration/Services.yaml
index cca02b9dd6c13da9c4b247ed0c335bf0ac2fb3f9..40519bb250d9c27ae248d6293519a1cb3446f7d9 100644
--- a/typo3/sysext/adminpanel/Configuration/Services.yaml
+++ b/typo3/sysext/adminpanel/Configuration/Services.yaml
@@ -12,30 +12,6 @@ services:
     factory: ['@TYPO3\CMS\Core\Cache\CacheManager', 'getCache']
     arguments: ['adminpanel_requestcache']
 
-  TYPO3\CMS\Adminpanel\Controller\AjaxController:
-    public: true
-  TYPO3\CMS\Adminpanel\Controller\MainController:
-    public: true
-
-  TYPO3\CMS\Adminpanel\Modules\CacheModule:
-    public: true
-  TYPO3\CMS\Adminpanel\Modules\DebugModule:
-    public: true
-  TYPO3\CMS\Adminpanel\Modules\InfoModule:
-    public: true
-  TYPO3\CMS\Adminpanel\Modules\PreviewModule:
-    public: true
-  TYPO3\CMS\Adminpanel\Modules\TsDebugModule:
-    public: true
-  TYPO3\CMS\Adminpanel\Modules\Debug\Log:
-    public: true
-  TYPO3\CMS\Adminpanel\Modules\Debug\Events:
-    public: true
-  TYPO3\CMS\Adminpanel\Modules\Info\GeneralInformation:
-    public: true
-  TYPO3\CMS\Adminpanel\Modules\TsDebug\TypoScriptWaterfall:
-    public: true
-
   Psr\EventDispatcher\EventDispatcherInterface:
     alias: TYPO3\CMS\Adminpanel\Service\EventDispatcher
     public: true
diff --git a/typo3/sysext/backend/Classes/Authentication/PasswordReset.php b/typo3/sysext/backend/Classes/Authentication/PasswordReset.php
index c44396a8d748a05de7c7918ea7255d0670290606..963675971937ec8e970e6e85c8028758125aa79f 100644
--- a/typo3/sysext/backend/Classes/Authentication/PasswordReset.php
+++ b/typo3/sysext/backend/Classes/Authentication/PasswordReset.php
@@ -23,6 +23,7 @@ use Psr\Http\Message\ServerRequestInterface;
 use Psr\Http\Message\UriInterface;
 use Psr\Log\LoggerAwareInterface;
 use Psr\Log\LoggerAwareTrait;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use Symfony\Component\Mime\Address;
 use TYPO3\CMS\Backend\Routing\UriBuilder;
 use TYPO3\CMS\Core\Context\Context;
@@ -61,6 +62,7 @@ use TYPO3\CMS\Core\Utility\GeneralUtility;
  *
  * @internal this is a concrete implementation for User/Password login and not part of public TYPO3 Core API.
  */
+#[Autoconfigure(public: true)]
 class PasswordReset implements LoggerAwareInterface
 {
     use LoggerAwareTrait;
diff --git a/typo3/sysext/backend/Classes/Backend/Shortcut/ShortcutRepository.php b/typo3/sysext/backend/Classes/Backend/Shortcut/ShortcutRepository.php
index 25319bbb1a5bc49e53903634e9d6a7649351b1c3..a17e3237ca517b3831045e8f117cffa59f849470 100644
--- a/typo3/sysext/backend/Classes/Backend/Shortcut/ShortcutRepository.php
+++ b/typo3/sysext/backend/Classes/Backend/Shortcut/ShortcutRepository.php
@@ -17,6 +17,7 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Backend\Backend\Shortcut;
 
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Backend\Module\ModuleProvider;
 use TYPO3\CMS\Backend\Routing\Router;
 use TYPO3\CMS\Backend\Routing\UriBuilder;
@@ -38,6 +39,7 @@ use TYPO3\CMS\Core\Utility\GeneralUtility;
  *
  * @internal This class is a specific Backend implementation and is not considered part of the Public TYPO3 API.
  */
+#[Autoconfigure(public: true)]
 class ShortcutRepository
 {
     /**
diff --git a/typo3/sysext/backend/Classes/Backend/ToolbarItems/ClearCacheToolbarItem.php b/typo3/sysext/backend/Classes/Backend/ToolbarItems/ClearCacheToolbarItem.php
index 3593939cd69decf4e1a6cdead341ed288b0c515b..fb8b1bbf4df9f334ba7c0d563bfdd198fbb92938 100644
--- a/typo3/sysext/backend/Classes/Backend/ToolbarItems/ClearCacheToolbarItem.php
+++ b/typo3/sysext/backend/Classes/Backend/ToolbarItems/ClearCacheToolbarItem.php
@@ -19,6 +19,7 @@ namespace TYPO3\CMS\Backend\Backend\ToolbarItems;
 
 use Psr\EventDispatcher\EventDispatcherInterface;
 use Psr\Http\Message\ServerRequestInterface;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Backend\Backend\Event\ModifyClearCacheActionsEvent;
 use TYPO3\CMS\Backend\Routing\UriBuilder;
 use TYPO3\CMS\Backend\Toolbar\RequestAwareToolbarItemInterface;
@@ -31,6 +32,7 @@ use TYPO3\CMS\Core\Authentication\BackendUserAuthentication;
  * Adds a dropdown if there are more than one item to clear (usually for admins to render the flush all caches).
  * The dropdown items can be manipulated using ModifyClearCacheActionsEvent.
  */
+#[Autoconfigure(public: true)]
 class ClearCacheToolbarItem implements ToolbarItemInterface, RequestAwareToolbarItemInterface
 {
     protected array $cacheActions = [];
diff --git a/typo3/sysext/backend/Classes/Backend/ToolbarItems/ShortcutToolbarItem.php b/typo3/sysext/backend/Classes/Backend/ToolbarItems/ShortcutToolbarItem.php
index cd7fd03d4179a8a67fa427ad7f6c1435a129ff43..6f977dad79ef8ef6c0dc77768e499465dd3f5b01 100644
--- a/typo3/sysext/backend/Classes/Backend/ToolbarItems/ShortcutToolbarItem.php
+++ b/typo3/sysext/backend/Classes/Backend/ToolbarItems/ShortcutToolbarItem.php
@@ -18,6 +18,7 @@ declare(strict_types=1);
 namespace TYPO3\CMS\Backend\Backend\ToolbarItems;
 
 use Psr\Http\Message\ServerRequestInterface;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Backend\Backend\Shortcut\ShortcutRepository;
 use TYPO3\CMS\Backend\Toolbar\RequestAwareToolbarItemInterface;
 use TYPO3\CMS\Backend\Toolbar\ToolbarItemInterface;
@@ -29,6 +30,7 @@ use TYPO3\CMS\Core\Authentication\BackendUserAuthentication;
  *
  * @internal This class is a specific Backend implementation and is not considered part of the Public TYPO3 API.
  */
+#[Autoconfigure(public: true)]
 class ShortcutToolbarItem implements ToolbarItemInterface, RequestAwareToolbarItemInterface
 {
     private ServerRequestInterface $request;
diff --git a/typo3/sysext/backend/Classes/Backend/ToolbarItems/SystemInformationToolbarItem.php b/typo3/sysext/backend/Classes/Backend/ToolbarItems/SystemInformationToolbarItem.php
index 5564c4bcb2ed5763737cff80ce7008742b94d91f..dc7913d6c6ad4040cdcc43058e43894714c5f395 100644
--- a/typo3/sysext/backend/Classes/Backend/ToolbarItems/SystemInformationToolbarItem.php
+++ b/typo3/sysext/backend/Classes/Backend/ToolbarItems/SystemInformationToolbarItem.php
@@ -19,6 +19,7 @@ namespace TYPO3\CMS\Backend\Backend\ToolbarItems;
 
 use Psr\EventDispatcher\EventDispatcherInterface;
 use Psr\Http\Message\ServerRequestInterface;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Backend\Backend\Event\SystemInformationToolbarCollectorEvent;
 use TYPO3\CMS\Backend\Toolbar\Enumeration\InformationStatus as DeprectaedInformationStatus;
 use TYPO3\CMS\Backend\Toolbar\InformationStatus;
@@ -37,6 +38,7 @@ use TYPO3\CMS\Core\Utility\GeneralUtility;
  * Render system information toolbar item and drop-down.
  * Provides some events for other extensions to add information.
  */
+#[Autoconfigure(public: true)]
 class SystemInformationToolbarItem implements ToolbarItemInterface, RequestAwareToolbarItemInterface
 {
     private ServerRequestInterface $request;
diff --git a/typo3/sysext/backend/Classes/ContextMenu/ContextMenu.php b/typo3/sysext/backend/Classes/ContextMenu/ContextMenu.php
index fb1da11a9267054a5f43fbcf49d8f6f5b39ced89..1d2983fdf1494d1ecbb981353e962c8bc1dcb4e4 100644
--- a/typo3/sysext/backend/Classes/ContextMenu/ContextMenu.php
+++ b/typo3/sysext/backend/Classes/ContextMenu/ContextMenu.php
@@ -17,6 +17,7 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Backend\ContextMenu;
 
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Backend\ContextMenu\ItemProviders\ItemProvidersRegistry;
 use TYPO3\CMS\Backend\ContextMenu\ItemProviders\ProviderInterface;
 
@@ -24,6 +25,7 @@ use TYPO3\CMS\Backend\ContextMenu\ItemProviders\ProviderInterface;
  * Class for generating the click menu
  * @internal
  */
+#[Autoconfigure(public: true)]
 class ContextMenu
 {
     protected ItemProvidersRegistry $itemProvidersRegistry;
diff --git a/typo3/sysext/backend/Classes/Form/FormDataProvider/ReturnUrl.php b/typo3/sysext/backend/Classes/Form/FormDataProvider/ReturnUrl.php
index 49cb8d3c5d4cbee76a30d29f2de4c84775417cec..1f94de07ae31a2ab0cb1a8ba163ee8aee15909c9 100644
--- a/typo3/sysext/backend/Classes/Form/FormDataProvider/ReturnUrl.php
+++ b/typo3/sysext/backend/Classes/Form/FormDataProvider/ReturnUrl.php
@@ -16,6 +16,7 @@
 namespace TYPO3\CMS\Backend\Form\FormDataProvider;
 
 use Psr\Http\Message\ServerRequestInterface;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Backend\Form\FormDataProviderInterface;
 use TYPO3\CMS\Backend\Routing\UriBuilder;
 
@@ -30,6 +31,7 @@ use TYPO3\CMS\Backend\Routing\UriBuilder;
  *        data, since only controllers know details about current
  *        context. The fallback below is a bit of guesswork.
  */
+#[Autoconfigure(public: true)]
 class ReturnUrl implements FormDataProviderInterface
 {
     public function __construct(private readonly UriBuilder $uriBuilder) {}
diff --git a/typo3/sysext/backend/Classes/Form/FormDataProvider/SiteDatabaseEditRow.php b/typo3/sysext/backend/Classes/Form/FormDataProvider/SiteDatabaseEditRow.php
index 61b51fbde2e98e134541faf52e1ea58eb7a82c3f..c145f69b96355da5a5bb7bdc8e3e6f2479ee2d25 100644
--- a/typo3/sysext/backend/Classes/Form/FormDataProvider/SiteDatabaseEditRow.php
+++ b/typo3/sysext/backend/Classes/Form/FormDataProvider/SiteDatabaseEditRow.php
@@ -17,6 +17,7 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Backend\Form\FormDataProvider;
 
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Backend\Form\FormDataProviderInterface;
 use TYPO3\CMS\Core\Configuration\SiteConfiguration;
 use TYPO3\CMS\Core\Exception\SiteNotFoundException;
@@ -28,6 +29,7 @@ use TYPO3\CMS\Core\Utility\GeneralUtility;
  *
  * Fetch "row" data from yml file and set as 'databaseRow'
  */
+#[Autoconfigure(public: true)]
 class SiteDatabaseEditRow implements FormDataProviderInterface
 {
     /**
diff --git a/typo3/sysext/backend/Classes/Form/Processor/SelectItemProcessor.php b/typo3/sysext/backend/Classes/Form/Processor/SelectItemProcessor.php
index 6ddf0f76f7fd25fe5e9db3e8c28967040ec7480b..8fad90fbdeb2abdd5253897cca5b6455575ae4ba 100644
--- a/typo3/sysext/backend/Classes/Form/Processor/SelectItemProcessor.php
+++ b/typo3/sysext/backend/Classes/Form/Processor/SelectItemProcessor.php
@@ -17,6 +17,7 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Backend\Form\Processor;
 
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Core\Authentication\BackendUserAuthentication;
 use TYPO3\CMS\Core\Localization\LanguageService;
 use TYPO3\CMS\Core\Localization\LanguageServiceFactory;
@@ -29,6 +30,7 @@ use TYPO3\CMS\Core\Utility\GeneralUtility;
  * @internal ext:backend internal implementation and not part of the public core API.
  * @todo Move additional shareable code from form-engine into here.
  */
+#[Autoconfigure(public: true)]
 final class SelectItemProcessor
 {
     public function __construct(protected readonly LanguageServiceFactory $languageServiceFactory) {}
diff --git a/typo3/sysext/backend/Classes/History/RecordHistoryRollback.php b/typo3/sysext/backend/Classes/History/RecordHistoryRollback.php
index 75ac36c62a8691eaff784371d590b1ab9b0092fa..087348f12c862db3039c7b630625af1e18254df7 100644
--- a/typo3/sysext/backend/Classes/History/RecordHistoryRollback.php
+++ b/typo3/sysext/backend/Classes/History/RecordHistoryRollback.php
@@ -18,6 +18,7 @@ declare(strict_types=1);
 namespace TYPO3\CMS\Backend\History;
 
 use Psr\EventDispatcher\EventDispatcherInterface;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Backend\History\Event\AfterHistoryRollbackFinishedEvent;
 use TYPO3\CMS\Backend\History\Event\BeforeHistoryRollbackStartEvent;
 use TYPO3\CMS\Backend\Utility\BackendUtility;
@@ -25,6 +26,7 @@ use TYPO3\CMS\Core\Authentication\BackendUserAuthentication;
 use TYPO3\CMS\Core\DataHandling\DataHandler;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 
+#[Autoconfigure(public: true)]
 class RecordHistoryRollback
 {
     /**
diff --git a/typo3/sysext/backend/Classes/Resource/PublicUrlPrefixer.php b/typo3/sysext/backend/Classes/Resource/PublicUrlPrefixer.php
index e8f9c712d5c812436a0d290e6ffab4d8dc3ecbff..b8c1db1320b79534621b4d120d133ba98980e501 100644
--- a/typo3/sysext/backend/Classes/Resource/PublicUrlPrefixer.php
+++ b/typo3/sysext/backend/Classes/Resource/PublicUrlPrefixer.php
@@ -17,11 +17,13 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Backend\Resource;
 
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Core\Resource\Event\GeneratePublicUrlForResourceEvent;
 use TYPO3\CMS\Core\Resource\ResourceInterface;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Core\Utility\PathUtility;
 
+#[Autoconfigure(public: true)]
 class PublicUrlPrefixer
 {
     /**
diff --git a/typo3/sysext/backend/Classes/Security/SudoMode/Access/AccessFactory.php b/typo3/sysext/backend/Classes/Security/SudoMode/Access/AccessFactory.php
index ea156215aebe4999c7e0ff75ccc2fda2be4c0e2b..3e5961a478e7cd2a03ecb986a329e517c94ff864 100644
--- a/typo3/sysext/backend/Classes/Security/SudoMode/Access/AccessFactory.php
+++ b/typo3/sysext/backend/Classes/Security/SudoMode/Access/AccessFactory.php
@@ -18,6 +18,7 @@ declare(strict_types=1);
 namespace TYPO3\CMS\Backend\Security\SudoMode\Access;
 
 use Psr\Http\Message\ServerRequestInterface;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Backend\Routing\Route;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 
@@ -26,6 +27,7 @@ use TYPO3\CMS\Core\Utility\GeneralUtility;
  *
  * @internal
  */
+#[Autoconfigure(public: true)]
 class AccessFactory
 {
     protected const DEFAULT_CLAIM_LIFETIME = 300;
diff --git a/typo3/sysext/backend/Classes/Security/SudoMode/Access/AccessStorage.php b/typo3/sysext/backend/Classes/Security/SudoMode/Access/AccessStorage.php
index e1408338a47e386518118fe3af387d2139e06348..d0b7bcc88177293ea215848ccfb434ecae8b2a18 100644
--- a/typo3/sysext/backend/Classes/Security/SudoMode/Access/AccessStorage.php
+++ b/typo3/sysext/backend/Classes/Security/SudoMode/Access/AccessStorage.php
@@ -19,6 +19,7 @@ namespace TYPO3\CMS\Backend\Security\SudoMode\Access;
 
 use Psr\Log\LoggerAwareInterface;
 use Psr\Log\LoggerAwareTrait;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Core\Authentication\BackendUserAuthentication;
 
 /**
@@ -26,6 +27,7 @@ use TYPO3\CMS\Core\Authentication\BackendUserAuthentication;
  *
  * @internal
  */
+#[Autoconfigure(public: true)]
 class AccessStorage implements LoggerAwareInterface
 {
     use LoggerAwareTrait;
diff --git a/typo3/sysext/backend/Classes/Tree/View/ContentCreationPagePositionMap.php b/typo3/sysext/backend/Classes/Tree/View/ContentCreationPagePositionMap.php
index ec6ce457a292a619ff12bd7964f448e72fc68af6..1f836628e8dc9ff5420aa83ac0aa84eee523fc52 100644
--- a/typo3/sysext/backend/Classes/Tree/View/ContentCreationPagePositionMap.php
+++ b/typo3/sysext/backend/Classes/Tree/View/ContentCreationPagePositionMap.php
@@ -17,6 +17,7 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Backend\Tree\View;
 
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Backend\Routing\UriBuilder;
 use TYPO3\CMS\Backend\Utility\BackendUtility;
 use TYPO3\CMS\Backend\View\BackendLayoutView;
@@ -29,6 +30,7 @@ use TYPO3\CMS\Core\Utility\StringUtility;
  *
  * @internal This class is a TYPO3 Backend implementation and is not considered part of the Public TYPO3 API.
  */
+#[Autoconfigure(public: true)]
 class ContentCreationPagePositionMap extends AbstractContentPagePositionMap
 {
     /**
diff --git a/typo3/sysext/backend/Classes/Tree/View/ContentMovingPagePositionMap.php b/typo3/sysext/backend/Classes/Tree/View/ContentMovingPagePositionMap.php
index 69525f8cf745650c3b85b3c30ee617edd008b4b7..5347ed1dacd6a90f3cd1246e95ca48d8be1a3652 100644
--- a/typo3/sysext/backend/Classes/Tree/View/ContentMovingPagePositionMap.php
+++ b/typo3/sysext/backend/Classes/Tree/View/ContentMovingPagePositionMap.php
@@ -17,6 +17,7 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Backend\Tree\View;
 
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Backend\Routing\UriBuilder;
 use TYPO3\CMS\Backend\Utility\BackendUtility;
 use TYPO3\CMS\Backend\View\BackendLayoutView;
@@ -28,6 +29,7 @@ use TYPO3\CMS\Core\Imaging\IconSize;
  *
  * @internal This class is a TYPO3 Backend implementation and is not considered part of the Public TYPO3 API.
  */
+#[Autoconfigure(public: true)]
 class ContentMovingPagePositionMap extends AbstractContentPagePositionMap
 {
     /**
diff --git a/typo3/sysext/backend/Classes/View/AuthenticationStyleInformation.php b/typo3/sysext/backend/Classes/View/AuthenticationStyleInformation.php
index b17dbae39638016795ea700cbeca3a844d917a39..f97cab4670901e6fcfd7fdb6d7cc95b4ce7945b5 100644
--- a/typo3/sysext/backend/Classes/View/AuthenticationStyleInformation.php
+++ b/typo3/sysext/backend/Classes/View/AuthenticationStyleInformation.php
@@ -19,6 +19,7 @@ namespace TYPO3\CMS\Backend\View;
 
 use Psr\Log\LoggerAwareInterface;
 use Psr\Log\LoggerAwareTrait;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Core\Configuration\ExtensionConfiguration;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Core\Utility\PathUtility;
@@ -28,6 +29,7 @@ use TYPO3\CMS\Core\Utility\PathUtility;
  *
  * @internal
  */
+#[Autoconfigure(public: true)]
 class AuthenticationStyleInformation implements LoggerAwareInterface
 {
     use LoggerAwareTrait;
diff --git a/typo3/sysext/backend/Configuration/Services.yaml b/typo3/sysext/backend/Configuration/Services.yaml
index f2a4b230e97980c1576bb72475128c8485fd8772..fb06daa03388e1a701e9a80c7c6876554017d6db 100644
--- a/typo3/sysext/backend/Configuration/Services.yaml
+++ b/typo3/sysext/backend/Configuration/Services.yaml
@@ -15,16 +15,10 @@ services:
     tags:
       - { name: 'console.command', command: 'backend:user:create', description: 'Create a backend user', schedulable: false }
 
-  TYPO3\CMS\Backend\Authentication\PasswordReset:
-    public: true
-
   TYPO3\CMS\Backend\Clipboard\Clipboard:
     shared: false
     public: true
 
-  TYPO3\CMS\Backend\ContextMenu\ContextMenu:
-    public: true
-
   TYPO3\CMS\Backend\ContextMenu\ItemProviders\ItemProvidersRegistry:
     arguments:
       - !tagged_iterator backend.contextmenu.itemprovider
@@ -39,15 +33,6 @@ services:
     shared: false
     public: true
 
-  TYPO3\CMS\Backend\History\RecordHistoryRollback:
-    public: true
-
-  TYPO3\CMS\Backend\Backend\Shortcut\ShortcutRepository:
-    public: true
-
-  TYPO3\CMS\Backend\View\AuthenticationStyleInformation:
-    public: true
-
   TYPO3\CMS\Backend\Search\LiveSearch\SearchProviderRegistry:
     arguments:
       - !tagged_iterator livesearch.provider
@@ -60,18 +45,9 @@ services:
     tags:
       - { name: 'livesearch.provider', priority: 60 }
 
-  TYPO3\CMS\Backend\Form\FormDataProvider\ReturnUrl:
-    public: true
-
-  TYPO3\CMS\Backend\Form\FormDataProvider\SiteDatabaseEditRow:
-    public: true
-
   TYPO3\CMS\Backend\Form\InlineStackProcessor:
     shared: false
 
-  TYPO3\CMS\Backend\Form\Processor\SelectItemProcessor:
-    public: true
-
   TYPO3\CMS\Backend\RecordList\DatabaseRecordList:
     shared: false
     public: true
@@ -87,34 +63,10 @@ services:
     arguments:
       - !tagged_iterator recordlist.elementbrowser
 
-  TYPO3\CMS\Backend\Resource\PublicUrlPrefixer:
-    public: true
-
-  TYPO3\CMS\Backend\Backend\ToolbarItems\ClearCacheToolbarItem:
-    public: true
-
-  TYPO3\CMS\Backend\Backend\ToolbarItems\ShortcutToolbarItem:
-    public: true
-
-  TYPO3\CMS\Backend\Backend\ToolbarItems\SystemInformationToolbarItem:
-    public: true
-
   TYPO3\CMS\Backend\LinkHandler\RecordLinkHandler:
     shared: false
     public: true
 
-  TYPO3\CMS\Backend\Tree\View\ContentCreationPagePositionMap:
-    public: true
-
-  TYPO3\CMS\Backend\Tree\View\ContentMovingPagePositionMap:
-    public: true
-
-  TYPO3\CMS\Backend\Security\SudoMode\Access\AccessFactory:
-    public: true
-
-  TYPO3\CMS\Backend\Security\SudoMode\Access\AccessStorage:
-    public: true
-
   TYPO3\CMS\Backend\View\RecordSearchBoxComponent:
     shared: false
     public: true
diff --git a/typo3/sysext/core/Classes/Authentication/Mfa/MfaProviderRegistry.php b/typo3/sysext/core/Classes/Authentication/Mfa/MfaProviderRegistry.php
index 2b77d10b2056133cc4ac42f8b872592113b8f740..5bec18b842d374a01ef2482bfafb5b73c43cea3b 100644
--- a/typo3/sysext/core/Classes/Authentication/Mfa/MfaProviderRegistry.php
+++ b/typo3/sysext/core/Classes/Authentication/Mfa/MfaProviderRegistry.php
@@ -17,6 +17,7 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Core\Authentication\Mfa;
 
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Core\Authentication\AbstractUserAuthentication;
 
 /**
@@ -24,6 +25,7 @@ use TYPO3\CMS\Core\Authentication\AbstractUserAuthentication;
  *
  * @internal should only be used by the TYPO3 Core
  */
+#[Autoconfigure(public: true)]
 class MfaProviderRegistry
 {
     /**
diff --git a/typo3/sysext/core/Classes/Configuration/FlexForm/FlexFormTools.php b/typo3/sysext/core/Classes/Configuration/FlexForm/FlexFormTools.php
index 9c2830591ffa349aa8ac57ff19de5fe6cdc407c1..22202c4c483fe54f603eeb39f6e86db6b7e11b2b 100644
--- a/typo3/sysext/core/Classes/Configuration/FlexForm/FlexFormTools.php
+++ b/typo3/sysext/core/Classes/Configuration/FlexForm/FlexFormTools.php
@@ -18,6 +18,7 @@ declare(strict_types=1);
 namespace TYPO3\CMS\Core\Configuration\FlexForm;
 
 use Psr\EventDispatcher\EventDispatcherInterface;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Core\Configuration\Event\AfterFlexFormDataStructureIdentifierInitializedEvent;
 use TYPO3\CMS\Core\Configuration\Event\AfterFlexFormDataStructureParsedEvent;
 use TYPO3\CMS\Core\Configuration\Event\BeforeFlexFormDataStructureIdentifierInitializedEvent;
@@ -36,6 +37,7 @@ use TYPO3\CMS\Core\Utility\GeneralUtility;
  * This service provides various helpers to determine the data structure of flex form
  * fields and to maintain integrity of flex form related details in general.
  */
+#[Autoconfigure(public: true)]
 class FlexFormTools
 {
     public function __construct(
diff --git a/typo3/sysext/core/Classes/Controller/FileDumpController.php b/typo3/sysext/core/Classes/Controller/FileDumpController.php
index c3d4982b5e6aed45b1137e706c93c2988b772639..cf526af8455592eeb6c53e333b985dd7ed907c1e 100644
--- a/typo3/sysext/core/Classes/Controller/FileDumpController.php
+++ b/typo3/sysext/core/Classes/Controller/FileDumpController.php
@@ -21,6 +21,7 @@ use Psr\EventDispatcher\EventDispatcherInterface;
 use Psr\Http\Message\ResponseFactoryInterface;
 use Psr\Http\Message\ResponseInterface;
 use Psr\Http\Message\ServerRequestInterface;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Core\Crypto\HashService;
 use TYPO3\CMS\Core\Imaging\ImageManipulation\CropVariantCollection;
 use TYPO3\CMS\Core\Resource\Event\ModifyFileDumpEvent;
@@ -35,6 +36,7 @@ use TYPO3\CMS\Core\Resource\Security\FileNameValidator;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Core\Utility\PathUtility;
 
+#[Autoconfigure(public: true)]
 readonly class FileDumpController
 {
     public function __construct(
diff --git a/typo3/sysext/core/Classes/Controller/PasswordGeneratorController.php b/typo3/sysext/core/Classes/Controller/PasswordGeneratorController.php
index b6b1412133d41280cac0b7881993eedc2d5650b0..0b3691c7e52ff2a1d683e510142f554d280e4c12 100644
--- a/typo3/sysext/core/Classes/Controller/PasswordGeneratorController.php
+++ b/typo3/sysext/core/Classes/Controller/PasswordGeneratorController.php
@@ -21,6 +21,7 @@ use Psr\Http\Message\ResponseFactoryInterface;
 use Psr\Http\Message\ResponseInterface;
 use Psr\Http\Message\ServerRequestInterface;
 use Psr\Http\Message\StreamFactoryInterface;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Core\Crypto\Random;
 use TYPO3\CMS\Core\Exception\InvalidPasswordRulesException;
 use TYPO3\CMS\Core\Localization\LanguageService;
@@ -28,6 +29,7 @@ use TYPO3\CMS\Core\Localization\LanguageService;
 /**
  * @internal Only to be used within TYPO3. Might change in the future.
  */
+#[Autoconfigure(public: true)]
 class PasswordGeneratorController
 {
     public function __construct(
diff --git a/typo3/sysext/core/Classes/DataHandling/ItemProcessingService.php b/typo3/sysext/core/Classes/DataHandling/ItemProcessingService.php
index 71b1dc58f6658965074d773f0596b20d915ba861..c4a9f6786cda3b99004fbe58146364e401ec6eec 100644
--- a/typo3/sysext/core/Classes/DataHandling/ItemProcessingService.php
+++ b/typo3/sysext/core/Classes/DataHandling/ItemProcessingService.php
@@ -15,6 +15,7 @@
 
 namespace TYPO3\CMS\Core\DataHandling;
 
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Backend\Utility\BackendUtility;
 use TYPO3\CMS\Core\Exception\SiteNotFoundException;
 use TYPO3\CMS\Core\Localization\LanguageService;
@@ -30,6 +31,7 @@ use TYPO3\CMS\Core\Utility\GeneralUtility;
 /**
  * Provides services around item processing
  */
+#[Autoconfigure(public: true)]
 class ItemProcessingService
 {
     public function __construct(
diff --git a/typo3/sysext/core/Classes/Database/ReferenceIndex.php b/typo3/sysext/core/Classes/Database/ReferenceIndex.php
index 9779818f26eba0d71c6d749f0cfbb0af0f9f2418..8b52fddd383409fc0e24de9d72e51780509377c2 100644
--- a/typo3/sysext/core/Classes/Database/ReferenceIndex.php
+++ b/typo3/sysext/core/Classes/Database/ReferenceIndex.php
@@ -19,6 +19,7 @@ namespace TYPO3\CMS\Core\Database;
 
 use Psr\EventDispatcher\EventDispatcherInterface;
 use Psr\Log\LogLevel;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Backend\Utility\BackendUtility;
 use TYPO3\CMS\Backend\View\ProgressListenerInterface;
 use TYPO3\CMS\Core\Configuration\FlexForm\Exception\InvalidIdentifierException;
@@ -36,6 +37,7 @@ use TYPO3\CMS\Core\Utility\GeneralUtility;
  *
  * @internal Extensions shouldn't fiddle with the reference index themselves, it's task of DataHandler to do this.
  */
+#[Autoconfigure(public: true)]
 class ReferenceIndex
 {
     /**
diff --git a/typo3/sysext/core/Classes/Database/Schema/SqlReader.php b/typo3/sysext/core/Classes/Database/Schema/SqlReader.php
index 72a316a412591bc983a58e58b49b6c861b3c14d1..7752c6f438798288d94d2e506e0ee4d8bda87dc0 100644
--- a/typo3/sysext/core/Classes/Database/Schema/SqlReader.php
+++ b/typo3/sysext/core/Classes/Database/Schema/SqlReader.php
@@ -18,6 +18,7 @@ declare(strict_types=1);
 namespace TYPO3\CMS\Core\Database\Schema;
 
 use Psr\EventDispatcher\EventDispatcherInterface;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Core\Database\Event\AlterTableDefinitionStatementsEvent;
 use TYPO3\CMS\Core\Package\PackageManager;
 
@@ -27,6 +28,7 @@ use TYPO3\CMS\Core\Package\PackageManager;
  *
  * @internal not part of public core API.
  */
+#[Autoconfigure(public: true)]
 class SqlReader
 {
     /**
diff --git a/typo3/sysext/core/Classes/Domain/Access/RecordAccessVoter.php b/typo3/sysext/core/Classes/Domain/Access/RecordAccessVoter.php
index aa55f8226528e6e7454cf6d8fb5e55807f3b0105..051a00fe0c1b9ddfe6b7c9c7530ae8cb4bfb45e7 100644
--- a/typo3/sysext/core/Classes/Domain/Access/RecordAccessVoter.php
+++ b/typo3/sysext/core/Classes/Domain/Access/RecordAccessVoter.php
@@ -18,6 +18,7 @@ declare(strict_types=1);
 namespace TYPO3\CMS\Core\Domain\Access;
 
 use Psr\EventDispatcher\EventDispatcherInterface;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Core\Context\Context;
 
 /**
@@ -25,6 +26,7 @@ use TYPO3\CMS\Core\Context\Context;
  *
  * Not related to "write permissions" etc.
  */
+#[Autoconfigure(public: true)]
 class RecordAccessVoter
 {
     public function __construct(
diff --git a/typo3/sysext/core/Classes/ExpressionLanguage/DefaultProvider.php b/typo3/sysext/core/Classes/ExpressionLanguage/DefaultProvider.php
index 2a835aacc04820cfc38219da923ca76ff3614ffd..abe0a9c62f7be16ad9119bfe7d5802874e07eb57 100644
--- a/typo3/sysext/core/Classes/ExpressionLanguage/DefaultProvider.php
+++ b/typo3/sysext/core/Classes/ExpressionLanguage/DefaultProvider.php
@@ -17,6 +17,7 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Core\ExpressionLanguage;
 
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Core\Configuration\Features;
 use TYPO3\CMS\Core\Context\Context;
 use TYPO3\CMS\Core\Core\Environment;
@@ -29,6 +30,7 @@ use TYPO3\CMS\Core\Information\Typo3Version;
  *
  * @internal
  */
+#[Autoconfigure(public: true)]
 class DefaultProvider extends AbstractProvider
 {
     public function __construct(
diff --git a/typo3/sysext/core/Classes/Html/RteHtmlParser.php b/typo3/sysext/core/Classes/Html/RteHtmlParser.php
index 0a45bbf97b298bed52f2837c7f23606398b1ef8a..2701adb831895f1ff113ee18bfbe07991fbc794c 100644
--- a/typo3/sysext/core/Classes/Html/RteHtmlParser.php
+++ b/typo3/sysext/core/Classes/Html/RteHtmlParser.php
@@ -20,6 +20,7 @@ namespace TYPO3\CMS\Core\Html;
 use Psr\EventDispatcher\EventDispatcherInterface;
 use Psr\Log\LoggerAwareInterface;
 use Psr\Log\LoggerAwareTrait;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Core\Configuration\Features;
 use TYPO3\CMS\Core\Html\Event\BrokenLinkAnalysisEvent;
 use TYPO3\CMS\Core\LinkHandling\Exception\UnknownLinkHandlerException;
@@ -36,6 +37,7 @@ use TYPO3\HtmlSanitizer\Builder\BuilderInterface;
  * line breaks to LFs internally, however when all transformations are done, all LFs are transformed to CRLFs.
  * This means: RteHtmlParser always returns CRLFs to be maximum compatible with all formats.
  */
+#[Autoconfigure(public: true)]
 class RteHtmlParser extends HtmlParser implements LoggerAwareInterface
 {
     use LoggerAwareTrait;
diff --git a/typo3/sysext/core/Classes/LinkHandling/TypoLinkCodecService.php b/typo3/sysext/core/Classes/LinkHandling/TypoLinkCodecService.php
index a03bf61dfdb8bddd1ee8237f9895ca9d3dc64c8c..448f5292b6cd4428267564b1615f25f15d6c7c2e 100644
--- a/typo3/sysext/core/Classes/LinkHandling/TypoLinkCodecService.php
+++ b/typo3/sysext/core/Classes/LinkHandling/TypoLinkCodecService.php
@@ -18,12 +18,14 @@ declare(strict_types=1);
 namespace TYPO3\CMS\Core\LinkHandling;
 
 use Psr\EventDispatcher\EventDispatcherInterface;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Core\LinkHandling\Event\AfterTypoLinkDecodedEvent;
 use TYPO3\CMS\Core\LinkHandling\Event\BeforeTypoLinkEncodedEvent;
 
 /**
  * This class provides basic functionality to encode and decode typolink strings
  */
+#[Autoconfigure(public: true)]
 final readonly class TypoLinkCodecService
 {
     /**
diff --git a/typo3/sysext/core/Classes/Localization/TcaSystemLanguageCollector.php b/typo3/sysext/core/Classes/Localization/TcaSystemLanguageCollector.php
index fd86a0206c7726920c21e42b48c1e3a8f577982d..8543d196c4dd33b068e69821e29f383e22cfddf6 100644
--- a/typo3/sysext/core/Classes/Localization/TcaSystemLanguageCollector.php
+++ b/typo3/sysext/core/Classes/Localization/TcaSystemLanguageCollector.php
@@ -17,6 +17,7 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Core\Localization;
 
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Core\Authentication\BackendUserAuthentication;
 use TYPO3\CMS\Core\Site\Entity\NullSite;
 use TYPO3\CMS\Core\Site\SiteFinder;
@@ -26,6 +27,7 @@ use TYPO3\CMS\Core\Utility\GeneralUtility;
  * Provides ItemProcFunc fields for special population of available TYPO3 system languages
  * @internal
  */
+#[Autoconfigure(public: true)]
 final class TcaSystemLanguageCollector
 {
     public function __construct(
diff --git a/typo3/sysext/core/Classes/Locking/ResourceMutex.php b/typo3/sysext/core/Classes/Locking/ResourceMutex.php
index 564023d482bfc601c6e5bb6c43c84b077e458c73..6443ec67227833d0358b58b0b77c7fe12db8e4db 100644
--- a/typo3/sysext/core/Classes/Locking/ResourceMutex.php
+++ b/typo3/sysext/core/Classes/Locking/ResourceMutex.php
@@ -15,6 +15,7 @@
 
 namespace TYPO3\CMS\Core\Locking;
 
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Core\Locking\Exception\LockAcquireException;
 use TYPO3\CMS\Core\Locking\Exception\LockAcquireWouldBlockException;
 use TYPO3\CMS\Core\Locking\Exception\LockCreateException;
@@ -50,6 +51,7 @@ use TYPO3\CMS\Core\Locking\Exception\LockCreateException;
  *
  * Note that the access lock resources are NEVER deleted/destroyed, otherwise the whole thing would be broken.
  */
+#[Autoconfigure(public: true)]
 class ResourceMutex
 {
     /**
diff --git a/typo3/sysext/core/Classes/Mail/Mailer.php b/typo3/sysext/core/Classes/Mail/Mailer.php
index 90b5073e8b4523ab29f4e316776b5295c4dd7e92..92268e3a8e4924519556618615df3a375a2064fa 100644
--- a/typo3/sysext/core/Classes/Mail/Mailer.php
+++ b/typo3/sysext/core/Classes/Mail/Mailer.php
@@ -16,6 +16,7 @@
 namespace TYPO3\CMS\Core\Mail;
 
 use Psr\EventDispatcher\EventDispatcherInterface;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use Symfony\Component\Mailer\Envelope;
 use Symfony\Component\Mailer\SentMessage;
 use Symfony\Component\Mailer\Transport\TransportInterface;
@@ -35,6 +36,7 @@ use TYPO3\CMS\Core\Utility\MailUtility;
  * This will use the setting in TYPO3_CONF_VARS to choose the correct transport
  * for it to work out-of-the-box.
  */
+#[Autoconfigure(public: true)]
 class Mailer implements MailerInterface
 {
     protected array $mailSettings = [];
diff --git a/typo3/sysext/core/Classes/Package/PackageActivationService.php b/typo3/sysext/core/Classes/Package/PackageActivationService.php
index b0dc2d04bcc7cbba64c8a66d4ac40a07718d45e5..85e5cee6d63ca0aaa6daca199e9f8f0c4ac4be30 100644
--- a/typo3/sysext/core/Classes/Package/PackageActivationService.php
+++ b/typo3/sysext/core/Classes/Package/PackageActivationService.php
@@ -18,6 +18,7 @@ declare(strict_types=1);
 namespace TYPO3\CMS\Core\Package;
 
 use Psr\EventDispatcher\EventDispatcherInterface;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Core\Cache\CacheManager;
 use TYPO3\CMS\Core\Configuration\Extension\ExtLocalconfFactory;
 use TYPO3\CMS\Core\Configuration\Extension\ExtTablesFactory;
@@ -37,6 +38,7 @@ use TYPO3\CMS\Core\Utility\PathUtility;
  *
  * @internal
  */
+#[Autoconfigure(public: true)]
 class PackageActivationService
 {
     public function __construct(
diff --git a/typo3/sysext/core/Classes/Page/PageLayoutResolver.php b/typo3/sysext/core/Classes/Page/PageLayoutResolver.php
index 791ea90e0b0a2671f84684ac1127d9ffe02d7de2..2a36903b3a6f623ed315db3f5155d35d4dd81f2e 100644
--- a/typo3/sysext/core/Classes/Page/PageLayoutResolver.php
+++ b/typo3/sysext/core/Classes/Page/PageLayoutResolver.php
@@ -17,6 +17,7 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Core\Page;
 
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Backend\View\BackendLayout\DataProviderCollection;
 use TYPO3\CMS\Backend\View\BackendLayout\DataProviderContext;
 use TYPO3\CMS\Backend\View\BackendLayout\DefaultDataProvider;
@@ -40,6 +41,7 @@ use TYPO3\CMS\Core\Utility\GeneralUtility;
  *
  * @internal This is not part of TYPO3 Core API.
  */
+#[Autoconfigure(public: true)]
 class PageLayoutResolver
 {
     public function __construct(
diff --git a/typo3/sysext/core/Classes/RateLimiter/Storage/CachingFrameworkStorage.php b/typo3/sysext/core/Classes/RateLimiter/Storage/CachingFrameworkStorage.php
index e33bc53887a01d10baf7dd543e2d69f067810700..04808e1c25d7bd083970221278300af71668f99d 100644
--- a/typo3/sysext/core/Classes/RateLimiter/Storage/CachingFrameworkStorage.php
+++ b/typo3/sysext/core/Classes/RateLimiter/Storage/CachingFrameworkStorage.php
@@ -17,6 +17,7 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Core\RateLimiter\Storage;
 
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use Symfony\Component\RateLimiter\LimiterStateInterface;
 use Symfony\Component\RateLimiter\Policy\SlidingWindow;
 use Symfony\Component\RateLimiter\Policy\TokenBucket;
@@ -30,6 +31,7 @@ use TYPO3\CMS\Core\Cache\Frontend\FrontendInterface;
  *
  * @internal This is not part of the official TYPO3 Core API due to a limitation of the experimental Symfony Rate Limiter API.
  */
+#[Autoconfigure(public: true)]
 class CachingFrameworkStorage implements StorageInterface
 {
     private FrontendInterface $cacheInstance;
diff --git a/typo3/sysext/core/Classes/Resource/DefaultUploadFolderResolver.php b/typo3/sysext/core/Classes/Resource/DefaultUploadFolderResolver.php
index 3e21b11792c0f83f971e81617c729808a31d6074..e9d928f5f70f78e516bde3dae1eb68bcd655f25a 100644
--- a/typo3/sysext/core/Classes/Resource/DefaultUploadFolderResolver.php
+++ b/typo3/sysext/core/Classes/Resource/DefaultUploadFolderResolver.php
@@ -17,6 +17,7 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Core\Resource;
 
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Backend\Utility\BackendUtility;
 use TYPO3\CMS\Core\Authentication\BackendUserAuthentication;
 use TYPO3\CMS\Core\EventDispatcher\EventDispatcher;
@@ -27,6 +28,7 @@ use TYPO3\CMS\Core\Resource\Exception\FolderDoesNotExistException;
  * Finds the best matching upload folder for a specific backend user
  * when uploading or selecting files, based on UserTSconfig or PageTSconfig
  */
+#[Autoconfigure(public: true)]
 class DefaultUploadFolderResolver
 {
     public function __construct(
diff --git a/typo3/sysext/core/Classes/Resource/FileRepository.php b/typo3/sysext/core/Classes/Resource/FileRepository.php
index 9fec67f030eff3dd3f5367bbbc94f1661799bbb4..3b462e1699018d6de56175d7cc34f33e162e49e7 100644
--- a/typo3/sysext/core/Classes/Resource/FileRepository.php
+++ b/typo3/sysext/core/Classes/Resource/FileRepository.php
@@ -17,6 +17,7 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Core\Resource;
 
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Backend\Utility\BackendUtility;
 use TYPO3\CMS\Core\Context\Context;
 use TYPO3\CMS\Core\Database\Connection;
@@ -34,6 +35,7 @@ use TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController;
  * It is however recommended to use the ResourceFactory instead of this class,
  * as it is more flexible.
  */
+#[Autoconfigure(public: true)]
 class FileRepository
 {
     public function __construct(
diff --git a/typo3/sysext/core/Classes/Resource/OnlineMedia/Processing/PreviewProcessing.php b/typo3/sysext/core/Classes/Resource/OnlineMedia/Processing/PreviewProcessing.php
index d17d4058adfbcf38addb658a607290e859384779..3a3fb5d0bc64964fe8bee923d9a6f3d089c07de6 100644
--- a/typo3/sysext/core/Classes/Resource/OnlineMedia/Processing/PreviewProcessing.php
+++ b/typo3/sysext/core/Classes/Resource/OnlineMedia/Processing/PreviewProcessing.php
@@ -16,6 +16,7 @@
 namespace TYPO3\CMS\Core\Resource\OnlineMedia\Processing;
 
 use Psr\EventDispatcher\EventDispatcherInterface;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Core\Resource\File;
 use TYPO3\CMS\Core\Resource\OnlineMedia\Event\AfterVideoPreviewFetchedEvent;
 use TYPO3\CMS\Core\Resource\OnlineMedia\Helpers\OnlineMediaHelperRegistry;
@@ -26,6 +27,7 @@ use TYPO3\CMS\Core\Resource\Processing\TaskInterface;
 /**
  * Preview of Online Media item Processing
  */
+#[Autoconfigure(public: true)]
 final class PreviewProcessing implements ProcessorInterface
 {
     public function __construct(
diff --git a/typo3/sysext/core/Classes/Resource/Security/SvgHookHandler.php b/typo3/sysext/core/Classes/Resource/Security/SvgHookHandler.php
index 7e0535b5dba5956a923b518716cc7da672a3b61b..6274f0fcab83ace782d3a1ce008abff756345441 100644
--- a/typo3/sysext/core/Classes/Resource/Security/SvgHookHandler.php
+++ b/typo3/sysext/core/Classes/Resource/Security/SvgHookHandler.php
@@ -17,6 +17,9 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Core\Resource\Security;
 
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
+
+#[Autoconfigure(public: true)]
 class SvgHookHandler
 {
     /**
diff --git a/typo3/sysext/core/Classes/Resource/Security/SvgTypeCheck.php b/typo3/sysext/core/Classes/Resource/Security/SvgTypeCheck.php
index 66509f620564493ac8890120fde803a4eee48bd0..2685da6c20bcb54c39975b8a1b13f35c7ceb92cb 100644
--- a/typo3/sysext/core/Classes/Resource/Security/SvgTypeCheck.php
+++ b/typo3/sysext/core/Classes/Resource/Security/SvgTypeCheck.php
@@ -17,11 +17,13 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Core\Resource\Security;
 
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Core\Resource\FileInterface;
 use TYPO3\CMS\Core\Resource\MimeTypeDetector;
 use TYPO3\CMS\Core\Type\File\FileInfo;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 
+#[Autoconfigure(public: true)]
 class SvgTypeCheck
 {
     protected const MIME_TYPES = ['image/svg', 'image/svg+xml', 'application/svg', 'application/svg+xml'];
diff --git a/typo3/sysext/core/Classes/Resource/Service/FileProcessingService.php b/typo3/sysext/core/Classes/Resource/Service/FileProcessingService.php
index 539b0863a484a5610ef5f64130771574acd57e8a..e94f29332fa743d00ec5c02a80ac98deeeae91e4 100644
--- a/typo3/sysext/core/Classes/Resource/Service/FileProcessingService.php
+++ b/typo3/sysext/core/Classes/Resource/Service/FileProcessingService.php
@@ -18,6 +18,7 @@ declare(strict_types=1);
 namespace TYPO3\CMS\Core\Resource\Service;
 
 use Psr\EventDispatcher\EventDispatcherInterface;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Core\Resource\Driver\DriverInterface;
 use TYPO3\CMS\Core\Resource\Event\AfterFileProcessingEvent;
 use TYPO3\CMS\Core\Resource\Event\BeforeFileProcessingEvent;
@@ -42,6 +43,7 @@ use TYPO3\CMS\Core\Resource\Processing\TaskInterface;
  * to be processed. If processing is required, a valid Processor is searched for to process the
  * Task object (which is retrieved from ProcessedFile->getTask()).
  */
+#[Autoconfigure(public: true)]
 class FileProcessingService
 {
     public function __construct(
diff --git a/typo3/sysext/core/Classes/Routing/BackendEntryPointResolver.php b/typo3/sysext/core/Classes/Routing/BackendEntryPointResolver.php
index c658dc9335a4e133892af2a5c6816a129c939590..9848ee76b8bc852a16903f61188d4187d4e25c5c 100644
--- a/typo3/sysext/core/Classes/Routing/BackendEntryPointResolver.php
+++ b/typo3/sysext/core/Classes/Routing/BackendEntryPointResolver.php
@@ -19,12 +19,14 @@ namespace TYPO3\CMS\Core\Routing;
 
 use Psr\Http\Message\ServerRequestInterface;
 use Psr\Http\Message\UriInterface;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Core\Http\NormalizedParams;
 use TYPO3\CMS\Core\Http\Uri;
 
 /**
  * This class helps to resolve the virtual path to the main entry point of the TYPO3 Backend.
  */
+#[Autoconfigure(public: true)]
 class BackendEntryPointResolver
 {
     protected string $entryPoint = '/typo3';
diff --git a/typo3/sysext/core/Classes/Routing/RequestContextFactory.php b/typo3/sysext/core/Classes/Routing/RequestContextFactory.php
index 9c8a6f7bf5875848e22f8c7149d4fee1154e9f6d..5289d62049f4d09655a617e53c486be9db17efdf 100644
--- a/typo3/sysext/core/Classes/Routing/RequestContextFactory.php
+++ b/typo3/sysext/core/Classes/Routing/RequestContextFactory.php
@@ -19,6 +19,7 @@ namespace TYPO3\CMS\Core\Routing;
 
 use Psr\Http\Message\ServerRequestInterface;
 use Psr\Http\Message\UriInterface;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use Symfony\Component\Routing\RequestContext;
 use TYPO3\CMS\Core\Site\Entity\SiteLanguage;
 
@@ -26,6 +27,7 @@ use TYPO3\CMS\Core\Site\Entity\SiteLanguage;
  * @internal this is not part of the TYPO3 Core public API, as it serves as an internal
  * bridge between symfony/routing component and PSR-7 requests
  */
+#[Autoconfigure(public: true)]
 class RequestContextFactory
 {
     public function __construct(
diff --git a/typo3/sysext/core/Classes/Security/ContentSecurityPolicy/PolicyProvider.php b/typo3/sysext/core/Classes/Security/ContentSecurityPolicy/PolicyProvider.php
index 228b7017b244072bd5c447345d9a9834ab79b1ac..a3b3d92ab48abaa3427cc3afcee882cea9879712 100644
--- a/typo3/sysext/core/Classes/Security/ContentSecurityPolicy/PolicyProvider.php
+++ b/typo3/sysext/core/Classes/Security/ContentSecurityPolicy/PolicyProvider.php
@@ -20,6 +20,7 @@ namespace TYPO3\CMS\Core\Security\ContentSecurityPolicy;
 use Psr\EventDispatcher\EventDispatcherInterface;
 use Psr\Http\Message\ServerRequestInterface;
 use Psr\Http\Message\UriInterface;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Core\Core\RequestId;
 use TYPO3\CMS\Core\Http\NormalizedParams;
 use TYPO3\CMS\Core\Http\Uri;
@@ -34,6 +35,7 @@ use TYPO3\CMS\Core\Site\SiteFinder;
  *
  * @internal
  */
+#[Autoconfigure(public: true)]
 final class PolicyProvider
 {
     protected const REPORTING_URI = '@http-reporting';
diff --git a/typo3/sysext/core/Classes/Security/ContentSecurityPolicy/PolicyRegistry.php b/typo3/sysext/core/Classes/Security/ContentSecurityPolicy/PolicyRegistry.php
index a762b551407bcc43d110c1e4aa27dfa607a0558b..d1b806de48ca4afdb89e3b5bb33b7628681a97ef 100644
--- a/typo3/sysext/core/Classes/Security/ContentSecurityPolicy/PolicyRegistry.php
+++ b/typo3/sysext/core/Classes/Security/ContentSecurityPolicy/PolicyRegistry.php
@@ -17,6 +17,8 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Core\Security\ContentSecurityPolicy;
 
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
+
 /**
  * A shared service registry to hold additional adjustments that were collected during
  * processing the current request. For instance, it would be used to temporarily(!) allow
@@ -24,6 +26,7 @@ namespace TYPO3\CMS\Core\Security\ContentSecurityPolicy;
  *
  * @internal
  */
+#[Autoconfigure(public: true)]
 final class PolicyRegistry
 {
     /**
diff --git a/typo3/sysext/core/Classes/TypoScript/AST/AstBuilder.php b/typo3/sysext/core/Classes/TypoScript/AST/AstBuilder.php
index c06b4510a74dd8eba531cd6db2d59f6594d31fc5..15b8e2ea48488ece1a85ad68bec6a273a4819925 100644
--- a/typo3/sysext/core/Classes/TypoScript/AST/AstBuilder.php
+++ b/typo3/sysext/core/Classes/TypoScript/AST/AstBuilder.php
@@ -18,6 +18,7 @@ declare(strict_types=1);
 namespace TYPO3\CMS\Core\TypoScript\AST;
 
 use Psr\EventDispatcher\EventDispatcherInterface;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Core\TypoScript\AST\CurrentObjectPath\CurrentObjectPath;
 use TYPO3\CMS\Core\TypoScript\AST\CurrentObjectPath\CurrentObjectPathStack;
 use TYPO3\CMS\Core\TypoScript\AST\Node\RootNode;
@@ -41,6 +42,7 @@ use TYPO3\CMS\Core\TypoScript\Tokenizer\Token\ConstantAwareTokenStream;
  *
  * @internal: Internal AST structure.
  */
+#[Autoconfigure(public: true)]
 final class AstBuilder extends AbstractAstBuilder implements AstBuilderInterface
 {
     public function __construct(
diff --git a/typo3/sysext/core/Classes/TypoScript/IncludeTree/StringTreeBuilder.php b/typo3/sysext/core/Classes/TypoScript/IncludeTree/StringTreeBuilder.php
index 044d1d004889d558b66c8b0e7863bbf144a73c36..3c5384ee438904b55ccbb4a6f19c6eec48bb02e6 100644
--- a/typo3/sysext/core/Classes/TypoScript/IncludeTree/StringTreeBuilder.php
+++ b/typo3/sysext/core/Classes/TypoScript/IncludeTree/StringTreeBuilder.php
@@ -17,6 +17,7 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Core\TypoScript\IncludeTree;
 
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Core\Cache\Frontend\PhpFrontend;
 use TYPO3\CMS\Core\TypoScript\IncludeTree\IncludeNode\RootInclude;
 use TYPO3\CMS\Core\TypoScript\IncludeTree\IncludeNode\StringInclude;
@@ -32,6 +33,7 @@ use TYPO3\CMS\Core\TypoScript\Tokenizer\TokenizerInterface;
  *
  * @internal
  */
+#[Autoconfigure(public: true)]
 final class StringTreeBuilder
 {
     public function __construct(
diff --git a/typo3/sysext/core/Classes/TypoScript/IncludeTree/SysTemplateRepository.php b/typo3/sysext/core/Classes/TypoScript/IncludeTree/SysTemplateRepository.php
index 2a6f0429393e7be35def5f23a451e8bbf37d351e..ab7133da4da734433154bbe33e7681170a59861a 100644
--- a/typo3/sysext/core/Classes/TypoScript/IncludeTree/SysTemplateRepository.php
+++ b/typo3/sysext/core/Classes/TypoScript/IncludeTree/SysTemplateRepository.php
@@ -19,6 +19,7 @@ namespace TYPO3\CMS\Core\TypoScript\IncludeTree;
 
 use Psr\EventDispatcher\EventDispatcherInterface;
 use Psr\Http\Message\ServerRequestInterface;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Core\Context\Context;
 use TYPO3\CMS\Core\Database\Connection;
 use TYPO3\CMS\Core\Database\ConnectionPool;
@@ -34,6 +35,7 @@ use TYPO3\CMS\Core\Utility\GeneralUtility;
  *
  * @internal: Internal structure. There is optimization potential and especially getSysTemplateRowsByRootline() will probably vanish later.
  */
+#[Autoconfigure(public: true)]
 final class SysTemplateRepository
 {
     public function __construct(
diff --git a/typo3/sysext/core/Classes/TypoScript/IncludeTree/SysTemplateTreeBuilder.php b/typo3/sysext/core/Classes/TypoScript/IncludeTree/SysTemplateTreeBuilder.php
index 839719447bbc0259472319930074ccb3be58b7fb..795a3768ff2b000e8fc99b16fe06401668c5ed0c 100644
--- a/typo3/sysext/core/Classes/TypoScript/IncludeTree/SysTemplateTreeBuilder.php
+++ b/typo3/sysext/core/Classes/TypoScript/IncludeTree/SysTemplateTreeBuilder.php
@@ -17,6 +17,7 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Core\TypoScript\IncludeTree;
 
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Core\Cache\Frontend\PhpFrontend;
 use TYPO3\CMS\Core\Context\Context;
 use TYPO3\CMS\Core\Database\Connection;
@@ -70,6 +71,7 @@ use TYPO3\CMS\Core\Utility\PathUtility;
  *
  * @internal: Internal tree structure.
  */
+#[Autoconfigure(public: true)]
 final class SysTemplateTreeBuilder
 {
     /**
diff --git a/typo3/sysext/core/Classes/TypoScript/IncludeTree/TsConfigTreeBuilder.php b/typo3/sysext/core/Classes/TypoScript/IncludeTree/TsConfigTreeBuilder.php
index 9cfd47b2e77aee21f2dae134c36a15859065d533..ff7bf168c05a494d2990dee4a25201419d5e9678 100644
--- a/typo3/sysext/core/Classes/TypoScript/IncludeTree/TsConfigTreeBuilder.php
+++ b/typo3/sysext/core/Classes/TypoScript/IncludeTree/TsConfigTreeBuilder.php
@@ -17,6 +17,7 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Core\TypoScript\IncludeTree;
 
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Core\Authentication\BackendUserAuthentication;
 use TYPO3\CMS\Core\Cache\Frontend\PhpFrontend;
 use TYPO3\CMS\Core\Core\Environment;
@@ -42,6 +43,7 @@ use TYPO3\CMS\Core\Utility\PathUtility;
  *
  * @internal
  */
+#[Autoconfigure(public: true)]
 final class TsConfigTreeBuilder
 {
     public function __construct(
diff --git a/typo3/sysext/core/Configuration/Services.yaml b/typo3/sysext/core/Configuration/Services.yaml
index 4ce9b6228c43d03effd41a1d4d49e3b8ebb0e0d7..5b4acf42bb18377fba1d44254ec3bda89ebe84ec 100644
--- a/typo3/sysext/core/Configuration/Services.yaml
+++ b/typo3/sysext/core/Configuration/Services.yaml
@@ -59,48 +59,12 @@ services:
         command: 'extension:setup'
         schedulable: false
 
-  TYPO3\CMS\Core\Configuration\FlexForm\FlexFormTools:
-    public: true
-
   TYPO3\CMS\Core\Package\UnitTestPackageManager:
     autoconfigure: false
 
   TYPO3\CMS\Core\Http\MiddlewareDispatcher:
     autoconfigure: false
 
-  TYPO3\CMS\Core\Database\ReferenceIndex:
-    public: true
-
-  TYPO3\CMS\Core\DataHandling\ItemProcessingService:
-    public: true
-
-  TYPO3\CMS\Core\Database\Schema\SqlReader:
-    public: true
-
-  TYPO3\CMS\Core\Html\RteHtmlParser:
-    public: true
-
-  TYPO3\CMS\Core\LinkHandling\TypoLinkCodecService:
-    public: true
-
-  TYPO3\CMS\Core\Mail\Mailer:
-    public: true
-
-  TYPO3\CMS\Core\Controller\FileDumpController:
-    public: true
-
-  TYPO3\CMS\Core\Controller\PasswordGeneratorController:
-    public: true
-
-  TYPO3\CMS\Core\Localization\TcaSystemLanguageCollector:
-    public: true
-
-  TYPO3\CMS\Core\Authentication\Mfa\MfaProviderRegistry:
-    public: true
-
-  TYPO3\CMS\Core\RateLimiter\Storage\CachingFrameworkStorage:
-    public: true
-
   TYPO3\CMS\Core\Authentication\Mfa\Provider\TotpProvider:
     tags:
       - name: mfa.provider
@@ -135,12 +99,6 @@ services:
     shared: false
     public: true
 
-  TYPO3\CMS\Core\Routing\BackendEntryPointResolver:
-    public: true
-
-  TYPO3\CMS\Core\Routing\RequestContextFactory:
-    public: true
-
   TYPO3\CMS\Core\Routing\Enhancer\VariableProcessor:
     public: true
     shared: false
@@ -148,9 +106,6 @@ services:
   TYPO3\CMS\Core\Routing\Enhancer\VariableProcessorCache:
     shared: true
 
-  TYPO3\CMS\Core\Package\PackageActivationService:
-    public: true
-
   # Soft Reference Parsers
   TYPO3\CMS\Core\DataHandling\SoftReference\SubstituteSoftReferenceParser:
     tags:
@@ -182,59 +137,14 @@ services:
       - name: softreference.parser
         parserKey: url
 
-  TYPO3\CMS\Core\ExpressionLanguage\DefaultProvider:
-    public: true
-
-  TYPO3\CMS\Core\Locking\ResourceMutex:
-    public: true
-
-  TYPO3\CMS\Core\Page\PageLayoutResolver:
-    public: true
-
   TYPO3\CMS\Core\Page\AssetRenderer:
     public: true
     arguments:
       $eventDispatcher: '@Psr\EventDispatcher\EventDispatcherInterface'
 
-  TYPO3\CMS\Core\Resource\FileRepository:
-    public: true
-
-  TYPO3\CMS\Core\Resource\Service\FileProcessingService:
-    public: true
-
-  TYPO3\CMS\Core\Resource\DefaultUploadFolderResolver:
-    public: true
-
-  TYPO3\CMS\Core\Resource\Security\SvgHookHandler:
-    public: true
-
-  TYPO3\CMS\Core\Resource\Security\SvgTypeCheck:
-    public: true
-
-  TYPO3\CMS\Core\Resource\OnlineMedia\Processing\PreviewProcessing:
-    public: true
-
-  TYPO3\CMS\Core\Domain\Access\RecordAccessVoter:
-    public: true
-
   TYPO3\CMS\Core\TypoScript\AST\AstBuilderInterface:
     alias: TYPO3\CMS\Core\TypoScript\AST\AstBuilder
 
-  TYPO3\CMS\Core\TypoScript\AST\AstBuilder:
-    public: true
-
-  TYPO3\CMS\Core\TypoScript\IncludeTree\StringTreeBuilder:
-    public: true
-
-  TYPO3\CMS\Core\TypoScript\IncludeTree\SysTemplateRepository:
-    public: true
-
-  TYPO3\CMS\Core\TypoScript\IncludeTree\SysTemplateTreeBuilder:
-    public: true
-
-  TYPO3\CMS\Core\TypoScript\IncludeTree\TsConfigTreeBuilder:
-    public: true
-
   TYPO3\CMS\Core\TypoScript\IncludeTree\Visitor\IncludeTreeAstBuilderVisitor:
     public: true
     # Ast builder visitor creates state and should not be re-used
@@ -417,12 +327,6 @@ services:
     arguments:
       $staticMutations: '@content.security.policies'
 
-  TYPO3\CMS\Core\Security\ContentSecurityPolicy\PolicyProvider:
-    public: true
-
-  TYPO3\CMS\Core\Security\ContentSecurityPolicy\PolicyRegistry:
-    public: true
-
   # External dependencies
 
   GuzzleHttp\Client:
diff --git a/typo3/sysext/extensionmanager/Classes/Domain/Repository/BulkExtensionRepositoryWriter.php b/typo3/sysext/extensionmanager/Classes/Domain/Repository/BulkExtensionRepositoryWriter.php
index db6d1cb31845e1166e161c896ed05cf86c3156b5..e4d4313d7e517eb25acdccd8edf8453510267cc5 100644
--- a/typo3/sysext/extensionmanager/Classes/Domain/Repository/BulkExtensionRepositoryWriter.php
+++ b/typo3/sysext/extensionmanager/Classes/Domain/Repository/BulkExtensionRepositoryWriter.php
@@ -18,6 +18,7 @@ declare(strict_types=1);
 namespace TYPO3\CMS\Extensionmanager\Domain\Repository;
 
 use Doctrine\DBAL\Exception as DBALException;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Core\Database\Connection;
 use TYPO3\CMS\Core\Database\ConnectionPool;
 use TYPO3\CMS\Core\Database\Platform\PlatformInformation;
@@ -30,6 +31,7 @@ use TYPO3\CMS\Extensionmanager\Parser\ExtensionXmlParser;
  *
  * @internal This class is a specific domain repository implementation and is not part of the Public TYPO3 API.
  */
+#[Autoconfigure(public: true)]
 class BulkExtensionRepositoryWriter implements \SplObserver
 {
     /**
diff --git a/typo3/sysext/extensionmanager/Classes/Remote/RemoteRegistry.php b/typo3/sysext/extensionmanager/Classes/Remote/RemoteRegistry.php
index d95fe0435f09e187326de81d63ea3c6c45995d19..084b564b3d73f72f5e6fef4c72900b0bac3215aa 100644
--- a/typo3/sysext/extensionmanager/Classes/Remote/RemoteRegistry.php
+++ b/typo3/sysext/extensionmanager/Classes/Remote/RemoteRegistry.php
@@ -17,11 +17,14 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Extensionmanager\Remote;
 
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
+
 /**
  * Registry of remote connectors.
  *
  * @internal This class is a specific implementation and is not part of the Public TYPO3 API.
  */
+#[Autoconfigure(public: true)]
 class RemoteRegistry
 {
     /**
diff --git a/typo3/sysext/extensionmanager/Configuration/Services.yaml b/typo3/sysext/extensionmanager/Configuration/Services.yaml
index 133c01f1f56d840f3eba5d74fb9e19a55d7572cb..e8c5cbef483d7baa636f9e0ca88e9eb25c93738f 100644
--- a/typo3/sysext/extensionmanager/Configuration/Services.yaml
+++ b/typo3/sysext/extensionmanager/Configuration/Services.yaml
@@ -42,9 +42,6 @@ services:
         alias: true
         schedulable: false
 
-  TYPO3\CMS\Extensionmanager\Remote\RemoteRegistry:
-    public: true
-
   TYPO3\CMS\Extensionmanager\Report\ExtensionComposerStatus:
     public: true
     tags:
@@ -54,9 +51,6 @@ services:
     tags:
       - name: reports.status
 
-  TYPO3\CMS\Extensionmanager\Domain\Repository\BulkExtensionRepositoryWriter:
-    public: true
-
   extension.remote.ter:
     class: 'TYPO3\CMS\Extensionmanager\Remote\TerExtensionRemote'
     arguments:
diff --git a/typo3/sysext/form/Classes/Mvc/Configuration/TypoScriptService.php b/typo3/sysext/form/Classes/Mvc/Configuration/TypoScriptService.php
index a7fd96bcccf6712e06678ea71c13ed51f8d5fc76..10dc61c44eacda192e19de6add7e373e966fd362 100644
--- a/typo3/sysext/form/Classes/Mvc/Configuration/TypoScriptService.php
+++ b/typo3/sysext/form/Classes/Mvc/Configuration/TypoScriptService.php
@@ -17,6 +17,7 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Form\Mvc\Configuration;
 
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Core\TypoScript\TypoScriptService as CoreTypoScriptService;
 use TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController;
 
@@ -25,6 +26,7 @@ use TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController;
  *
  * Scope: frontend
  */
+#[Autoconfigure(public: true)]
 class TypoScriptService
 {
     protected CoreTypoScriptService $coreTypoScriptService;
diff --git a/typo3/sysext/form/Classes/Mvc/Property/PropertyMappingConfiguration.php b/typo3/sysext/form/Classes/Mvc/Property/PropertyMappingConfiguration.php
index 33f7c64d72650446dfcb8c475709e24945a116c7..6d3775e5456b7d5c45fcb87455aa8af824aebdaa 100644
--- a/typo3/sysext/form/Classes/Mvc/Property/PropertyMappingConfiguration.php
+++ b/typo3/sysext/form/Classes/Mvc/Property/PropertyMappingConfiguration.php
@@ -17,6 +17,7 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Form\Mvc\Property;
 
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Core\Resource\ResourceFactory;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Core\Utility\PathUtility;
@@ -34,6 +35,7 @@ use TYPO3\CMS\Form\Mvc\Validation\MimeTypeValidator;
  * Scope: frontend
  * @internal
  */
+#[Autoconfigure(public: true)]
 class PropertyMappingConfiguration implements AfterFormStateInitializedInterface
 {
     public function __construct(protected readonly ValidatorResolver $validatorResolver) {}
diff --git a/typo3/sysext/form/Configuration/Services.yaml b/typo3/sysext/form/Configuration/Services.yaml
index 0277b54f1ac8ef270f473814bef4180f7cac539c..60878ac1f71b5143b3671037c289fa4ceeab632b 100644
--- a/typo3/sysext/form/Configuration/Services.yaml
+++ b/typo3/sysext/form/Configuration/Services.yaml
@@ -12,9 +12,6 @@ services:
     alias: TYPO3\CMS\Form\Mvc\Configuration\ConfigurationManager
     public: true
 
-  TYPO3\CMS\Form\Mvc\Configuration\TypoScriptService:
-    public: true
-
   TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManagerInterface:
     alias: TYPO3\CMS\Form\Mvc\Persistence\FormPersistenceManager
     public: true
@@ -35,9 +32,6 @@ services:
     public: true
     shared: false
 
-  TYPO3\CMS\Form\Mvc\Property\PropertyMappingConfiguration:
-    public: true
-
   TYPO3\CMS\Form\SoftReference\FormPersistenceIdentifierSoftReferenceParser:
     tags:
       - name: softreference.parser
diff --git a/typo3/sysext/frontend/Classes/ContentObject/ContentDataProcessor.php b/typo3/sysext/frontend/Classes/ContentObject/ContentDataProcessor.php
index 343de55edd9a9b93f4511f00715dfc2dcefcb79a..d319d8ab685442f6c30db6a7fd4b348583535012 100644
--- a/typo3/sysext/frontend/Classes/ContentObject/ContentDataProcessor.php
+++ b/typo3/sysext/frontend/Classes/ContentObject/ContentDataProcessor.php
@@ -16,6 +16,7 @@
 namespace TYPO3\CMS\Frontend\ContentObject;
 
 use Psr\Container\ContainerInterface;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Core\Utility\ArrayUtility;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Frontend\DataProcessing\DataProcessorRegistry;
@@ -23,6 +24,7 @@ use TYPO3\CMS\Frontend\DataProcessing\DataProcessorRegistry;
 /**
  * A class that contains methods that can be used to use the dataProcessing functionality
  */
+#[Autoconfigure(public: true)]
 class ContentDataProcessor
 {
     public function __construct(
diff --git a/typo3/sysext/frontend/Classes/Controller/ShowImageController.php b/typo3/sysext/frontend/Classes/Controller/ShowImageController.php
index 92569baad961cf501a14b8354f8f2c881e41af07..4fa70dc1eefa7a7ddae450df8e250ee3fc91a413 100644
--- a/typo3/sysext/frontend/Classes/Controller/ShowImageController.php
+++ b/typo3/sysext/frontend/Classes/Controller/ShowImageController.php
@@ -19,6 +19,7 @@ namespace TYPO3\CMS\Frontend\Controller;
 
 use Psr\Http\Message\ResponseInterface;
 use Psr\Http\Message\ServerRequestInterface;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Core\Configuration\Features;
 use TYPO3\CMS\Core\Crypto\HashService;
 use TYPO3\CMS\Core\Exception;
@@ -47,6 +48,7 @@ use TYPO3\CMS\Core\Utility\MathUtility;
  *
  * @internal this is a concrete TYPO3 implementation and solely used for EXT:frontend and not part of TYPO3's Core API.
  */
+#[Autoconfigure(public: true)]
 class ShowImageController
 {
     protected const ALLOWED_PARAMETER_NAMES = ['width', 'height', 'crop', 'bodyTag', 'title'];
diff --git a/typo3/sysext/frontend/Classes/Html/HtmlWorker.php b/typo3/sysext/frontend/Classes/Html/HtmlWorker.php
index adf53bd618c5cf7deed83a7caa03b24c7b2c2787..6efc2cbf97d8136399f5c4f45eedeace64be17d7 100644
--- a/typo3/sysext/frontend/Classes/Html/HtmlWorker.php
+++ b/typo3/sysext/frontend/Classes/Html/HtmlWorker.php
@@ -18,6 +18,7 @@ declare(strict_types=1);
 namespace TYPO3\CMS\Frontend\Html;
 
 use Masterminds\HTML5;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Core\Security\ContentSecurityPolicy\ConsumableNonce;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Frontend\Typolink\LinkFactory;
@@ -26,6 +27,7 @@ use TYPO3\CMS\Frontend\Typolink\UnableToLinkException;
 /**
  * @internal API still might change
  */
+#[Autoconfigure(public: true)]
 class HtmlWorker
 {
     /**
diff --git a/typo3/sysext/frontend/Classes/Resource/PublicUrlPrefixer.php b/typo3/sysext/frontend/Classes/Resource/PublicUrlPrefixer.php
index 7fa7ad6ac714ce31194766d91b1a8653b474c53c..4d2fe14589b9a464b7006d8d01e5e12e26f7aadf 100644
--- a/typo3/sysext/frontend/Classes/Resource/PublicUrlPrefixer.php
+++ b/typo3/sysext/frontend/Classes/Resource/PublicUrlPrefixer.php
@@ -17,11 +17,13 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Frontend\Resource;
 
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Core\Resource\Event\GeneratePublicUrlForResourceEvent;
 use TYPO3\CMS\Core\Resource\ResourceInterface;
 use TYPO3\CMS\Core\Utility\PathUtility;
 use TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController;
 
+#[Autoconfigure(public: true)]
 class PublicUrlPrefixer
 {
     /**
diff --git a/typo3/sysext/frontend/Configuration/Services.yaml b/typo3/sysext/frontend/Configuration/Services.yaml
index ec363a55bfff3a40e26764a23cbad6ad8fe54aa4..8b0cc1129f88aec060128a4cdaffcdfa7b05ba03 100644
--- a/typo3/sysext/frontend/Configuration/Services.yaml
+++ b/typo3/sysext/frontend/Configuration/Services.yaml
@@ -11,12 +11,6 @@ services:
     # (e.g. because factories are to be used instead)
     exclude: '../Classes/{Frontend/Controller/TypoScriptFrontendController.php}'
 
-  TYPO3\CMS\Frontend\Controller\ShowImageController:
-    public: true
-
-  TYPO3\CMS\Frontend\ContentObject\ContentDataProcessor:
-    public: true
-
   TYPO3\CMS\Frontend\ContentObject\ContentObjectFactory:
     public: true
     arguments: [!tagged_locator { tag: 'frontend.contentobject', index_by: 'identifier' }]
@@ -34,18 +28,12 @@ services:
   TYPO3\CMS\Frontend\DataProcessing\DataProcessorRegistry:
     arguments: [!tagged_locator { tag: 'data.processor', index_by: 'identifier' }]
 
-  TYPO3\CMS\Frontend\Resource\PublicUrlPrefixer:
-    public: true
-
   TYPO3\CMS\Frontend\Resource\FileCollector:
     public: true
     # @todo The file collector is used for intermediate collection in scoped places. Therefore, the collector can't be
     # @todo shared. Evaluate if the collector can be build scope aware and made sharable again.
     shared: false
 
-  TYPO3\CMS\Frontend\Html\HtmlWorker:
-    public: true
-
   # Register all available content objects
   TYPO3\CMS\Frontend\ContentObject\TextContentObject:
     tags:
diff --git a/typo3/sysext/linkvalidator/Classes/LinkAnalyzer.php b/typo3/sysext/linkvalidator/Classes/LinkAnalyzer.php
index b54dea100b14960c7472d10d2314316babbb267b..ec0f8c4878f3ec52e71c9ede6cb078abf852c68a 100644
--- a/typo3/sysext/linkvalidator/Classes/LinkAnalyzer.php
+++ b/typo3/sysext/linkvalidator/Classes/LinkAnalyzer.php
@@ -16,6 +16,7 @@
 namespace TYPO3\CMS\Linkvalidator;
 
 use Psr\EventDispatcher\EventDispatcherInterface;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Backend\Utility\BackendUtility;
 use TYPO3\CMS\Core\Database\Connection;
 use TYPO3\CMS\Core\Database\ConnectionPool;
@@ -35,6 +36,7 @@ use TYPO3\CMS\Linkvalidator\Repository\BrokenLinkRepository;
  * This class provides Processing plugin implementation
  * @internal
  */
+#[Autoconfigure(public: true)]
 class LinkAnalyzer
 {
     /**
diff --git a/typo3/sysext/linkvalidator/Classes/Linktype/ExternalLinktype.php b/typo3/sysext/linkvalidator/Classes/Linktype/ExternalLinktype.php
index cdbbe04a5258b5f7bc8946e8a92375a8018ce6c6..5310ffdb990bc3b055a2fcb3b76bd5b37e9a5023 100644
--- a/typo3/sysext/linkvalidator/Classes/Linktype/ExternalLinktype.php
+++ b/typo3/sysext/linkvalidator/Classes/Linktype/ExternalLinktype.php
@@ -23,6 +23,7 @@ use GuzzleHttp\Exception\ConnectException;
 use GuzzleHttp\Exception\RequestException;
 use GuzzleHttp\Exception\ServerException;
 use GuzzleHttp\Exception\TooManyRedirectsException;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Core\Http\RequestFactory;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Core\Utility\HttpUtility;
@@ -36,6 +37,7 @@ use TYPO3\CMS\Linkvalidator\LinkAnalyzer;
  * - no caching of results (except for a runtime cache during link checking which will be invalid on next run)
  * see "Known Problems" in the linkvalidator documentation
  */
+#[Autoconfigure(public: true)]
 class ExternalLinktype extends AbstractLinktype
 {
     // HTTP status code was delivered (and can be found in $errorParams['errno'])
diff --git a/typo3/sysext/linkvalidator/Classes/Repository/BrokenLinkRepository.php b/typo3/sysext/linkvalidator/Classes/Repository/BrokenLinkRepository.php
index fd86c990376133c7c5a4e73f0ed5e546592b3047..28c7b45087863c0c2860e0edfbbead1cbfc88a70 100644
--- a/typo3/sysext/linkvalidator/Classes/Repository/BrokenLinkRepository.php
+++ b/typo3/sysext/linkvalidator/Classes/Repository/BrokenLinkRepository.php
@@ -18,6 +18,7 @@ declare(strict_types=1);
 namespace TYPO3\CMS\Linkvalidator\Repository;
 
 use Doctrine\DBAL\Exception\TableNotFoundException;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Core\Database\Connection;
 use TYPO3\CMS\Core\Database\ConnectionPool;
 use TYPO3\CMS\Core\Database\Platform\PlatformInformation;
@@ -28,6 +29,7 @@ use TYPO3\CMS\Linkvalidator\QueryRestrictions\EditableRestriction;
 /**
  * Repository for finding broken links that were detected previously.
  */
+#[Autoconfigure(public: true)]
 class BrokenLinkRepository
 {
     protected const TABLE = 'tx_linkvalidator_link';
diff --git a/typo3/sysext/linkvalidator/Classes/Result/LinkAnalyzerResult.php b/typo3/sysext/linkvalidator/Classes/Result/LinkAnalyzerResult.php
index 1c3070a13bc5929be34119450be83e00af754be1..6cdfbafbaf3f95c715c5e525d7e4ecbf5fee12fa 100644
--- a/typo3/sysext/linkvalidator/Classes/Result/LinkAnalyzerResult.php
+++ b/typo3/sysext/linkvalidator/Classes/Result/LinkAnalyzerResult.php
@@ -17,6 +17,7 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Linkvalidator\Result;
 
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Backend\Utility\BackendUtility;
 use TYPO3\CMS\Core\Database\Connection;
 use TYPO3\CMS\Core\Database\ConnectionPool;
@@ -34,6 +35,7 @@ use TYPO3\CMS\Linkvalidator\Repository\PagesRepository;
  *
  * @internal
  */
+#[Autoconfigure(public: true)]
 class LinkAnalyzerResult
 {
     protected array $brokenLinks = [];
diff --git a/typo3/sysext/linkvalidator/Configuration/Services.yaml b/typo3/sysext/linkvalidator/Configuration/Services.yaml
index 84c61684a3351f26cc1909759d98855e48d9abeb..01b08b4a0eadc75a1518feea22daf67dd0f916c6 100644
--- a/typo3/sysext/linkvalidator/Configuration/Services.yaml
+++ b/typo3/sysext/linkvalidator/Configuration/Services.yaml
@@ -9,18 +9,6 @@ services:
     # Tasks require EXT:scheduler to be installed, ignore for now.
     exclude: '../Classes/Task'
 
-  TYPO3\CMS\Linkvalidator\LinkAnalyzer:
-    public: true
-
-  TYPO3\CMS\Linkvalidator\Linktype\ExternalLinktype:
-    public: true
-
-  TYPO3\CMS\Linkvalidator\Repository\BrokenLinkRepository:
-    public: true
-
-  TYPO3\CMS\Linkvalidator\Result\LinkAnalyzerResult:
-    public: true
-
   # Linktype registry
   TYPO3\CMS\Linkvalidator\Linktype\LinktypeRegistry:
     public: true
diff --git a/typo3/sysext/lowlevel/Classes/ConfigurationModuleProvider/ProviderRegistry.php b/typo3/sysext/lowlevel/Classes/ConfigurationModuleProvider/ProviderRegistry.php
index 468d92a7348da7501283fcf15ae12ccad9e03d08..2cf12f294682d0f6ee2755f4887923725d28bd36 100644
--- a/typo3/sysext/lowlevel/Classes/ConfigurationModuleProvider/ProviderRegistry.php
+++ b/typo3/sysext/lowlevel/Classes/ConfigurationModuleProvider/ProviderRegistry.php
@@ -17,9 +17,12 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Lowlevel\ConfigurationModuleProvider;
 
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
+
 /**
  * Registry for configuration providers which is called by the ConfigurationProviderPass
  */
+#[Autoconfigure(public: true)]
 final class ProviderRegistry
 {
     /**
diff --git a/typo3/sysext/lowlevel/Configuration/Services.yaml b/typo3/sysext/lowlevel/Configuration/Services.yaml
index 72fe889a7816e15da57ed0c7590c4f42cbc493c1..4191e26d649f5577e9c5a83379da21332d1a23f9 100644
--- a/typo3/sysext/lowlevel/Configuration/Services.yaml
+++ b/typo3/sysext/lowlevel/Configuration/Services.yaml
@@ -14,9 +14,6 @@ services:
         description: 'Show entries from the sys_log database table of the last 24 hours.'
         schedulable: false
 
-  TYPO3\CMS\Lowlevel\ConfigurationModuleProvider\ProviderRegistry:
-    public: true
-
   lowlevel.configuration.module.provider.confvars:
     class: 'TYPO3\CMS\Lowlevel\ConfigurationModuleProvider\GlobalVariableProvider'
     tags:
diff --git a/typo3/sysext/redirects/Classes/Hooks/DataHandlerSlugUpdateHook.php b/typo3/sysext/redirects/Classes/Hooks/DataHandlerSlugUpdateHook.php
index 4ca300faaffd2c2639bdd0d4a2d5ff3034e7ba60..7bdbb65fe1e3e8d078e123085b89ae894839cb6e 100644
--- a/typo3/sysext/redirects/Classes/Hooks/DataHandlerSlugUpdateHook.php
+++ b/typo3/sysext/redirects/Classes/Hooks/DataHandlerSlugUpdateHook.php
@@ -17,6 +17,7 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Redirects\Hooks;
 
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Core\DataHandling\DataHandler;
 use TYPO3\CMS\Core\Utility\MathUtility;
 use TYPO3\CMS\Redirects\RedirectUpdate\SlugRedirectChangeItem;
@@ -26,6 +27,7 @@ use TYPO3\CMS\Redirects\Service\SlugService;
 /**
  * @internal This class is a specific TYPO3 hook implementation and is not part of the Public TYPO3 API.
  */
+#[Autoconfigure(public: true)]
 class DataHandlerSlugUpdateHook
 {
     /**
diff --git a/typo3/sysext/redirects/Classes/Report/Status/RedirectStatus.php b/typo3/sysext/redirects/Classes/Report/Status/RedirectStatus.php
index d82e5fc998a383a6c1542b6188c0f813fb7af441..3c30d07a6663fe99cbdb79329d1eae78175647b9 100644
--- a/typo3/sysext/redirects/Classes/Report/Status/RedirectStatus.php
+++ b/typo3/sysext/redirects/Classes/Report/Status/RedirectStatus.php
@@ -18,6 +18,7 @@ declare(strict_types=1);
 namespace TYPO3\CMS\Redirects\Report\Status;
 
 use Psr\Http\Message\ServerRequestInterface;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Backend\View\BackendViewFactory;
 use TYPO3\CMS\Core\Localization\LanguageService;
 use TYPO3\CMS\Core\Registry;
@@ -33,6 +34,7 @@ use TYPO3\CMS\Reports\StatusProviderInterface;
 /**
  * Performs checks regarding redirects
  */
+#[Autoconfigure(public: true)]
 class RedirectStatus implements StatusProviderInterface, RequestAwareStatusProviderInterface
 {
     public function __construct(
diff --git a/typo3/sysext/redirects/Configuration/Services.yaml b/typo3/sysext/redirects/Configuration/Services.yaml
index 0b021b02588be598db1cf45307624401bb910d1b..40e95b3597adbd39da0221a5c7a409ada0942e40 100644
--- a/typo3/sysext/redirects/Configuration/Services.yaml
+++ b/typo3/sysext/redirects/Configuration/Services.yaml
@@ -15,12 +15,6 @@ services:
     arguments:
       - 'redirects'
 
-  TYPO3\CMS\Redirects\Report\Status\RedirectStatus:
-    public: true
-
-  TYPO3\CMS\Redirects\Hooks\DataHandlerSlugUpdateHook:
-    public: true
-
   TYPO3\CMS\Redirects\Configuration\CheckIntegrityConfiguration:
     arguments:
       $extensionConfiguration: '@extension.configuration.redirects'
diff --git a/typo3/sysext/reports/Classes/Report/Status/Status.php b/typo3/sysext/reports/Classes/Report/Status/Status.php
index f67ca13d6f4fa4f126e61ec0e4f614376cc1855a..93e6bd358021651dacc859f54f617b36fac45edf 100644
--- a/typo3/sysext/reports/Classes/Report/Status/Status.php
+++ b/typo3/sysext/reports/Classes/Report/Status/Status.php
@@ -16,6 +16,7 @@
 namespace TYPO3\CMS\Reports\Report\Status;
 
 use Psr\Http\Message\ServerRequestInterface;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Backend\View\BackendViewFactory;
 use TYPO3\CMS\Core\Localization\LanguageService;
 use TYPO3\CMS\Core\Registry;
@@ -30,6 +31,7 @@ use TYPO3\CMS\Reports\Status as ReportStatus;
 /**
  * The status report
  */
+#[Autoconfigure(public: true)]
 class Status implements RequestAwareReportInterface
 {
     /**
diff --git a/typo3/sysext/reports/Configuration/Services.yaml b/typo3/sysext/reports/Configuration/Services.yaml
index 4df44ad6f3c6fa35addfc8366b8d62a95d3b4f3d..56cce078ebe3c1b83cf3ed831fd6948449e31988 100644
--- a/typo3/sysext/reports/Configuration/Services.yaml
+++ b/typo3/sysext/reports/Configuration/Services.yaml
@@ -9,9 +9,6 @@ services:
     # Tasks require EXT:scheduler to be installed, ignore for now.
     exclude: '../Classes/Task'
 
-  TYPO3\CMS\Reports\Report\Status\Status:
-    public: true
-
   TYPO3\CMS\Reports\Registry\StatusRegistry:
     arguments:
       - !tagged_iterator reports.status
diff --git a/typo3/sysext/scheduler/Classes/Domain/Repository/SchedulerTaskRepository.php b/typo3/sysext/scheduler/Classes/Domain/Repository/SchedulerTaskRepository.php
index 25fcf7ebe71215383c159dbc0623ef3d23eb11b5..b18335115d07ad5b1c9c80950c2139e1129db1ef 100644
--- a/typo3/sysext/scheduler/Classes/Domain/Repository/SchedulerTaskRepository.php
+++ b/typo3/sysext/scheduler/Classes/Domain/Repository/SchedulerTaskRepository.php
@@ -18,6 +18,7 @@ declare(strict_types=1);
 namespace TYPO3\CMS\Scheduler\Domain\Repository;
 
 use Doctrine\DBAL\Exception as DBALException;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Core\Core\Environment;
 use TYPO3\CMS\Core\Database\Connection;
 use TYPO3\CMS\Core\Database\ConnectionPool;
@@ -32,6 +33,7 @@ use TYPO3\CMS\Scheduler\Validation\Validator\TaskValidator;
 /**
  * Repository class to fetch tasks available in the systems ready to be executed
  */
+#[Autoconfigure(public: true)]
 class SchedulerTaskRepository
 {
     protected const TABLE_NAME = 'tx_scheduler_task';
diff --git a/typo3/sysext/scheduler/Configuration/Services.yaml b/typo3/sysext/scheduler/Configuration/Services.yaml
index 6f901858df4663c5d31468fa296c51bec4ec3b4f..f41eec9ad5bebe63ae7fbd54d3b2d865bd8fac4e 100644
--- a/typo3/sysext/scheduler/Configuration/Services.yaml
+++ b/typo3/sysext/scheduler/Configuration/Services.yaml
@@ -7,9 +7,6 @@ services:
   TYPO3\CMS\Scheduler\:
     resource: '../Classes/*'
 
-  TYPO3\CMS\Scheduler\Domain\Repository\SchedulerTaskRepository:
-    public: true
-
   TYPO3\CMS\Scheduler\Command\SchedulerCommand:
     tags:
       - name: 'console.command'
diff --git a/typo3/sysext/seo/Classes/Canonical/CanonicalGenerator.php b/typo3/sysext/seo/Classes/Canonical/CanonicalGenerator.php
index cf8a3c579241520f34de319074465e959df7fd91..0b7e0c7afc95c14527ce0ec55633314f00aa9230 100644
--- a/typo3/sysext/seo/Classes/Canonical/CanonicalGenerator.php
+++ b/typo3/sysext/seo/Classes/Canonical/CanonicalGenerator.php
@@ -19,6 +19,7 @@ namespace TYPO3\CMS\Seo\Canonical;
 
 use Psr\EventDispatcher\EventDispatcherInterface;
 use Psr\Http\Message\ServerRequestInterface;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Core\Domain\Page;
 use TYPO3\CMS\Core\Domain\Repository\PageRepository;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
@@ -33,6 +34,7 @@ use TYPO3\CMS\Seo\Exception\CanonicalGenerationDisabledException;
  *
  * @internal this class is not part of TYPO3's Core API.
  */
+#[Autoconfigure(public: true)]
 readonly class CanonicalGenerator
 {
     public function __construct(
diff --git a/typo3/sysext/seo/Classes/MetaTag/MetaTagGenerator.php b/typo3/sysext/seo/Classes/MetaTag/MetaTagGenerator.php
index 2d3c2dc86fd63df23aa381650bba232cfc6daccc..3db1110ae1ca2f9ca76a03fd7fab864230a3ff56 100644
--- a/typo3/sysext/seo/Classes/MetaTag/MetaTagGenerator.php
+++ b/typo3/sysext/seo/Classes/MetaTag/MetaTagGenerator.php
@@ -18,6 +18,7 @@ declare(strict_types=1);
 namespace TYPO3\CMS\Seo\MetaTag;
 
 use Psr\Http\Message\ServerRequestInterface;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Core\Imaging\ImageManipulation\CropVariantCollection;
 use TYPO3\CMS\Core\MetaTag\MetaTagManagerRegistry;
 use TYPO3\CMS\Core\Resource\FileInterface;
@@ -32,6 +33,7 @@ use TYPO3\CMS\Frontend\Resource\FileCollector;
  *
  * @internal
  */
+#[Autoconfigure(public: true)]
 readonly class MetaTagGenerator
 {
     public function __construct(
diff --git a/typo3/sysext/seo/Classes/XmlSitemap/XmlSitemapRenderer.php b/typo3/sysext/seo/Classes/XmlSitemap/XmlSitemapRenderer.php
index d005b7b101175778437cc3fb8dc0867daf0db35d..3850e6513ad0b90cb0783d60618e0c0fabdb94ff 100644
--- a/typo3/sysext/seo/Classes/XmlSitemap/XmlSitemapRenderer.php
+++ b/typo3/sysext/seo/Classes/XmlSitemap/XmlSitemapRenderer.php
@@ -18,6 +18,7 @@ declare(strict_types=1);
 namespace TYPO3\CMS\Seo\XmlSitemap;
 
 use Psr\Http\Message\ServerRequestInterface;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Core\Http\PropagateResponseException;
 use TYPO3\CMS\Core\TypoScript\TypoScriptService;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
@@ -32,6 +33,7 @@ use TYPO3Fluid\Fluid\View\TemplateView;
  *
  * @internal this class is not part of TYPO3's Core API.
  */
+#[Autoconfigure(public: true)]
 final class XmlSitemapRenderer
 {
     public function __construct(
diff --git a/typo3/sysext/seo/Configuration/Services.yaml b/typo3/sysext/seo/Configuration/Services.yaml
index 38f95453bf818ebfd80f94a63b15839481391402..db392d379d32fc764fd77094bc6a77e9c92b5abb 100644
--- a/typo3/sysext/seo/Configuration/Services.yaml
+++ b/typo3/sysext/seo/Configuration/Services.yaml
@@ -7,15 +7,6 @@ services:
   TYPO3\CMS\Seo\:
     resource: '../Classes/*'
 
-  TYPO3\CMS\Seo\MetaTag\MetaTagGenerator:
-    public: true
-
-  TYPO3\CMS\Seo\Canonical\CanonicalGenerator:
-    public: true
-
-  TYPO3\CMS\Seo\XmlSitemap\XmlSitemapRenderer:
-    public: true
-
   TYPO3\CMS\Seo\Widgets\Provider\PagesWithoutDescriptionDataProvider:
     arguments:
       $excludedDoktypes: [ 3, 4, 6, 7, 199, 254 ]
diff --git a/typo3/sysext/webhooks/Classes/Listener/MessageListener.php b/typo3/sysext/webhooks/Classes/Listener/MessageListener.php
index ea7ec257fcb8f2a09190caf6a0ae17c858d72eb7..d3f8acd53aabadee354b7ad9f51d261903c10846 100644
--- a/typo3/sysext/webhooks/Classes/Listener/MessageListener.php
+++ b/typo3/sysext/webhooks/Classes/Listener/MessageListener.php
@@ -18,6 +18,7 @@ declare(strict_types=1);
 namespace TYPO3\CMS\Webhooks\Listener;
 
 use Psr\Log\LoggerInterface;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use Symfony\Component\Messenger\MessageBusInterface;
 use TYPO3\CMS\Webhooks\Message\WebhookMessageFactory;
 
@@ -29,6 +30,7 @@ use TYPO3\CMS\Webhooks\Message\WebhookMessageFactory;
  *
  * @internal not part of TYPO3 Core API
  */
+#[Autoconfigure(public: true)]
 class MessageListener
 {
     public function __construct(
diff --git a/typo3/sysext/webhooks/Classes/Listener/PageModificationListener.php b/typo3/sysext/webhooks/Classes/Listener/PageModificationListener.php
index b200846d9cc84d7db14a4a3345c6362230deaca8..f932e7a8adf4fdbb2fbc1a2201fc545d49957fb3 100644
--- a/typo3/sysext/webhooks/Classes/Listener/PageModificationListener.php
+++ b/typo3/sysext/webhooks/Classes/Listener/PageModificationListener.php
@@ -18,6 +18,7 @@ declare(strict_types=1);
 namespace TYPO3\CMS\Webhooks\Listener;
 
 use Psr\Log\LoggerInterface;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use Symfony\Component\Messenger\MessageBusInterface;
 use TYPO3\CMS\Backend\Utility\BackendUtility;
 use TYPO3\CMS\Core\DataHandling\DataHandler;
@@ -34,6 +35,7 @@ use TYPO3\CMS\Webhooks\Message\PageModificationMessage;
  *
  * @internal not part of TYPO3 Core API
  */
+#[Autoconfigure(public: true)]
 class PageModificationListener
 {
     public function __construct(
diff --git a/typo3/sysext/webhooks/Classes/Tca/ItemsProcFunc/WebhookTypesItemsProcFunc.php b/typo3/sysext/webhooks/Classes/Tca/ItemsProcFunc/WebhookTypesItemsProcFunc.php
index 04d04528eac4cc6dab8f757e555f749b22201a1e..0c417dd384575102982a2fb77c842535b4f59406 100644
--- a/typo3/sysext/webhooks/Classes/Tca/ItemsProcFunc/WebhookTypesItemsProcFunc.php
+++ b/typo3/sysext/webhooks/Classes/Tca/ItemsProcFunc/WebhookTypesItemsProcFunc.php
@@ -17,6 +17,7 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Webhooks\Tca\ItemsProcFunc;
 
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Core\Localization\LanguageServiceFactory;
 use TYPO3\CMS\Webhooks\WebhookTypesRegistry;
 
@@ -25,6 +26,7 @@ use TYPO3\CMS\Webhooks\WebhookTypesRegistry;
  *
  * @internal not part of TYPO3's Core API
  */
+#[Autoconfigure(public: true)]
 class WebhookTypesItemsProcFunc
 {
     public function __construct(
diff --git a/typo3/sysext/webhooks/Classes/WebhookTypesRegistry.php b/typo3/sysext/webhooks/Classes/WebhookTypesRegistry.php
index 06b12d1130dc591dba396f8287c6fae52789b55b..c371dda8df61a91b4eca11962a8696c201c2d8de 100644
--- a/typo3/sysext/webhooks/Classes/WebhookTypesRegistry.php
+++ b/typo3/sysext/webhooks/Classes/WebhookTypesRegistry.php
@@ -17,6 +17,7 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Webhooks;
 
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Webhooks\Model\WebhookType;
 
 /**
@@ -25,6 +26,7 @@ use TYPO3\CMS\Webhooks\Model\WebhookType;
  *
  * @internal not part of TYPO3's Core API
  */
+#[Autoconfigure(public: true)]
 class WebhookTypesRegistry
 {
     /**
diff --git a/typo3/sysext/webhooks/Configuration/Services.yaml b/typo3/sysext/webhooks/Configuration/Services.yaml
index a9258a1f5b8bd46cccb8f655156f9622fdb13271..ca84888b364d081efa6f1284115f0f85d528bbdf 100644
--- a/typo3/sysext/webhooks/Configuration/Services.yaml
+++ b/typo3/sysext/webhooks/Configuration/Services.yaml
@@ -6,16 +6,3 @@ services:
 
   TYPO3\CMS\Webhooks\:
     resource: '../Classes/*'
-
-  TYPO3\CMS\Webhooks\WebhookTypesRegistry:
-    public: true
-
-  TYPO3\CMS\Webhooks\Listener\PageModificationListener:
-    public: true
-
-  # public true is required in ajax backend calls (e.g. when adding a file)
-  TYPO3\CMS\Webhooks\Listener\MessageListener:
-    public: true
-
-  TYPO3\CMS\Webhooks\Tca\ItemsProcFunc\WebhookTypesItemsProcFunc:
-    public: true
diff --git a/typo3/sysext/workspaces/Classes/Controller/Remote/ActionHandler.php b/typo3/sysext/workspaces/Classes/Controller/Remote/ActionHandler.php
index 03e6e1f61407a39115875e751d5f28a6d32c2659..a8b0ead6763661d4fe90421e9a0ddff8058dfd63 100644
--- a/typo3/sysext/workspaces/Classes/Controller/Remote/ActionHandler.php
+++ b/typo3/sysext/workspaces/Classes/Controller/Remote/ActionHandler.php
@@ -18,6 +18,7 @@ declare(strict_types=1);
 namespace TYPO3\CMS\Workspaces\Controller\Remote;
 
 use Psr\Http\Message\ServerRequestInterface;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Backend\Utility\BackendUtility;
 use TYPO3\CMS\Backend\View\BackendViewFactory;
 use TYPO3\CMS\Core\Authentication\BackendUserAuthentication;
@@ -34,6 +35,7 @@ use TYPO3\CMS\Workspaces\Service\WorkspaceService;
 /**
  * @internal This is a specific Backend Controller implementation and is not considered part of the Public TYPO3 API.
  */
+#[Autoconfigure(public: true)]
 class ActionHandler
 {
     public function __construct(
diff --git a/typo3/sysext/workspaces/Classes/Controller/Remote/RemoteServer.php b/typo3/sysext/workspaces/Classes/Controller/Remote/RemoteServer.php
index 35171f0626c1623c596e6414bdadd36ee041cc97..933e51385f12680c625ff7bc9c124af70dd7f20b 100644
--- a/typo3/sysext/workspaces/Classes/Controller/Remote/RemoteServer.php
+++ b/typo3/sysext/workspaces/Classes/Controller/Remote/RemoteServer.php
@@ -19,6 +19,7 @@ namespace TYPO3\CMS\Workspaces\Controller\Remote;
 
 use Psr\EventDispatcher\EventDispatcherInterface;
 use Psr\Http\Message\ServerRequestInterface;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Backend\Backend\Avatar\Avatar;
 use TYPO3\CMS\Backend\Form\FormDataCompiler;
 use TYPO3\CMS\Backend\Form\FormDataGroup\TcaDatabaseRecord;
@@ -51,6 +52,7 @@ use TYPO3\CMS\Workspaces\Service\WorkspaceService;
 /**
  * @internal This is a specific Backend Controller implementation and is not considered part of the Public TYPO3 API.
  */
+#[Autoconfigure(public: true)]
 class RemoteServer
 {
     use LogDataTrait;
diff --git a/typo3/sysext/workspaces/Classes/Hook/DataHandlerHook.php b/typo3/sysext/workspaces/Classes/Hook/DataHandlerHook.php
index 626295555f67636df8efcc3a7a2adb2017657b92..dbf1b3936c67ae628d13d1a031baa49e0af9b737 100644
--- a/typo3/sysext/workspaces/Classes/Hook/DataHandlerHook.php
+++ b/typo3/sysext/workspaces/Classes/Hook/DataHandlerHook.php
@@ -17,6 +17,7 @@ namespace TYPO3\CMS\Workspaces\Hook;
 
 use Doctrine\DBAL\Exception as DBALException;
 use Psr\EventDispatcher\EventDispatcherInterface;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use Symfony\Component\Messenger\MessageBusInterface;
 use TYPO3\CMS\Backend\Utility\BackendUtility;
 use TYPO3\CMS\Core\Authentication\BackendUserAuthentication;
@@ -47,6 +48,7 @@ use TYPO3\CMS\Workspaces\Service\WorkspaceService;
  * to interact with the TYPO3 Core Engine
  * @internal This is a specific hook implementation and is not considered part of the Public TYPO3 API.
  */
+#[Autoconfigure(public: true)]
 class DataHandlerHook
 {
     /**
diff --git a/typo3/sysext/workspaces/Classes/Notification/StageChangeNotification.php b/typo3/sysext/workspaces/Classes/Notification/StageChangeNotification.php
index 165e35c8ff84d94e12ba01bdac27bad076c535f2..c7bdee47bd8e6acf818e13d9bc40ff15ee558e10 100644
--- a/typo3/sysext/workspaces/Classes/Notification/StageChangeNotification.php
+++ b/typo3/sysext/workspaces/Classes/Notification/StageChangeNotification.php
@@ -20,6 +20,7 @@ namespace TYPO3\CMS\Workspaces\Notification;
 use Psr\Http\Message\ServerRequestInterface;
 use Psr\Log\LoggerAwareInterface;
 use Psr\Log\LoggerAwareTrait;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use Symfony\Component\Mailer\Exception\TransportException;
 use Symfony\Component\Mime\Address;
 use Symfony\Component\Mime\Exception\RfcComplianceException;
@@ -39,6 +40,7 @@ use TYPO3\CMS\Workspaces\Service\StagesService;
  *
  * @internal This is a concrete implementation of sending out emails, and not part of the public TYPO3 Core API
  */
+#[Autoconfigure(public: true)]
 class StageChangeNotification implements LoggerAwareInterface
 {
     use LoggerAwareTrait;
diff --git a/typo3/sysext/workspaces/Classes/Preview/PreviewUriBuilder.php b/typo3/sysext/workspaces/Classes/Preview/PreviewUriBuilder.php
index 4de2f5423043dcd66439d09f0b49a4f45eea89fe..b4dcce013e09227ceca4ac94d9f81d75a1d84977 100644
--- a/typo3/sysext/workspaces/Classes/Preview/PreviewUriBuilder.php
+++ b/typo3/sysext/workspaces/Classes/Preview/PreviewUriBuilder.php
@@ -19,6 +19,7 @@ namespace TYPO3\CMS\Workspaces\Preview;
 
 use Psr\EventDispatcher\EventDispatcherInterface;
 use Psr\Http\Message\UriInterface;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Backend\Configuration\TranslationConfigurationProvider;
 use TYPO3\CMS\Backend\Routing\PreviewUriBuilder as BackendPreviewUriBuilder;
 use TYPO3\CMS\Backend\Routing\UriBuilder;
@@ -43,6 +44,7 @@ use TYPO3\CMS\Workspaces\Service\WorkspaceService;
  *
  * @internal
  */
+#[Autoconfigure(public: true)]
 class PreviewUriBuilder
 {
     /**
diff --git a/typo3/sysext/workspaces/Classes/Service/GridDataService.php b/typo3/sysext/workspaces/Classes/Service/GridDataService.php
index 3684c27fc0c58e06ca086436e8d216db5c3a11d0..d7d8b27798fb5dc33344c05bb1a838050f163e1d 100644
--- a/typo3/sysext/workspaces/Classes/Service/GridDataService.php
+++ b/typo3/sysext/workspaces/Classes/Service/GridDataService.php
@@ -21,6 +21,7 @@ use Psr\EventDispatcher\EventDispatcherInterface;
 use Psr\Http\Message\ServerRequestInterface;
 use Psr\Log\LoggerAwareInterface;
 use Psr\Log\LoggerAwareTrait;
+use Symfony\Component\DependencyInjection\Attribute\Autoconfigure;
 use TYPO3\CMS\Backend\Configuration\TranslationConfigurationProvider;
 use TYPO3\CMS\Backend\Module\ModuleProvider;
 use TYPO3\CMS\Backend\Utility\BackendUtility;
@@ -44,6 +45,7 @@ use TYPO3\CMS\Workspaces\Service\Dependency\CollectionService;
 /**
  * @internal
  */
+#[Autoconfigure(public: true)]
 class GridDataService implements LoggerAwareInterface
 {
     use LoggerAwareTrait;
diff --git a/typo3/sysext/workspaces/Configuration/Services.yaml b/typo3/sysext/workspaces/Configuration/Services.yaml
index 701b188a78490632b9d693382d213544870f2011..b57309b0ac53be448d66594ee1c3ef770841d101 100644
--- a/typo3/sysext/workspaces/Configuration/Services.yaml
+++ b/typo3/sysext/workspaces/Configuration/Services.yaml
@@ -12,24 +12,6 @@ services:
     factory: ['@TYPO3\CMS\Core\Cache\CacheManager', 'getCache']
     arguments: ['workspaces_cache']
 
-  TYPO3\CMS\Workspaces\Controller\Remote\RemoteServer:
-    public: true
-
-  TYPO3\CMS\Workspaces\Notification\StageChangeNotification:
-    public: true
-
-  TYPO3\CMS\Workspaces\Preview\PreviewUriBuilder:
-    public: true
-
-  TYPO3\CMS\Workspaces\Service\GridDataService:
-    public: true
-
   TYPO3\CMS\Workspaces\Service\WorkspaceService:
     public: true
     shared: true
-
-  TYPO3\CMS\Workspaces\Controller\Remote\ActionHandler:
-    public: true
-
-  TYPO3\CMS\Workspaces\Hook\DataHandlerHook:
-    public: true