diff --git a/src/Resources/config/services/route_loader.xml b/src/Resources/config/services/route_loader.xml
index 390422c..e75f34b 100644
--- a/src/Resources/config/services/route_loader.xml
+++ b/src/Resources/config/services/route_loader.xml
@@ -16,5 +16,12 @@
+
+
+ %sylius.resource.mapping%
+
+
+
+
diff --git a/src/Routing/CrudRoutesAttributesLoader.php b/src/Routing/CrudRoutesAttributesLoader.php
new file mode 100644
index 0000000..6270fdb
--- /dev/null
+++ b/src/Routing/CrudRoutesAttributesLoader.php
@@ -0,0 +1,62 @@
+mapping = $mapping;
+ $this->resourceLoader = $resourceLoader;
+ $this->crudRoutesAttributesLoader = $crudRoutesAttributesLoader;
+ }
+
+ public function __invoke(): RouteCollection
+ {
+ $routeCollection = new RouteCollection();
+ $paths = $this->mapping['paths'] ?? [];
+
+ /** @var string $className */
+ foreach (ClassReflection::getResourcesByPaths($paths) as $className) {
+ $this->addRoutesForSyliusCrudRoutesAttributes($routeCollection, $className);
+ }
+
+ return $routeCollection;
+ }
+
+ private function addRoutesForSyliusCrudRoutesAttributes(RouteCollection $routeCollection, string $className): void
+ {
+ $attributes = ClassReflection::getClassAttributes($className, SyliusCrudRoutes::class);
+
+ foreach ($attributes as $reflectionAttribute) {
+ $resource = Yaml::dump($reflectionAttribute->getArguments());
+ $resourceRouteCollection = $this->resourceLoader->load($resource);
+ $routeCollection->addCollection($resourceRouteCollection);
+ }
+ }
+}