diff --git a/src/dependency_injector/wiring.py b/src/dependency_injector/wiring.py
index 9de6f823..a3a87e20 100644
--- a/src/dependency_injector/wiring.py
+++ b/src/dependency_injector/wiring.py
@@ -628,21 +628,6 @@ def _fetch_reference_injections(  # noqa: C901
     return injections, closing
 
 
-def _locate_dependent_closing_args(
-    provider: providers.Provider, closing_deps: Dict[str, providers.Provider]
-) -> Dict[str, providers.Provider]:
-    for arg in [
-        *getattr(provider, "args", []),
-        *getattr(provider, "kwargs", {}).values(),
-    ]:
-        if not isinstance(arg, providers.Provider):
-            continue
-        if isinstance(arg, providers.Resource):
-            closing_deps[str(id(arg))] = arg
-
-        _locate_dependent_closing_args(arg, closing_deps)
-
-
 def _bind_injections(fn: Callable[..., Any], providers_map: ProvidersMap) -> None:
     patched_callable = _patched_registry.get_callable(fn)
     if patched_callable is None:
@@ -664,10 +649,9 @@ def _bind_injections(fn: Callable[..., Any], providers_map: ProvidersMap) -> Non
 
         if injection in patched_callable.reference_closing:
             patched_callable.add_closing(injection, provider)
-            deps = {}
-            _locate_dependent_closing_args(provider, deps)
-            for key, dep in deps.items():
-                patched_callable.add_closing(key, dep)
+
+            for resource in provider.traverse(types=[providers.Resource]):
+                patched_callable.add_closing(str(id(resource)), resource)
 
 
 def _unbind_injections(fn: Callable[..., Any]) -> None:
diff --git a/tests/unit/samples/wiringstringids/resourceclosing.py b/tests/unit/samples/wiringstringids/resourceclosing.py
index c4d1f20f..5a3d2ba4 100644
--- a/tests/unit/samples/wiringstringids/resourceclosing.py
+++ b/tests/unit/samples/wiringstringids/resourceclosing.py
@@ -59,12 +59,13 @@ def init_service(counter: Counter, _list: List[int], _dict: Dict[str, int]):
 
 
 class Container(containers.DeclarativeContainer):
+    config = providers.Configuration(default={"a": 1, "b": 4})
     counter = providers.Singleton(Counter)
     _list = providers.List(
-        providers.Callable(lambda a: a, a=1), providers.Callable(lambda b: b, 2)
+        providers.Callable(lambda a: a, a=config.a), providers.Callable(lambda b: b, 2)
     )
     _dict = providers.Dict(
-        a=providers.Callable(lambda a: a, a=3), b=providers.Callable(lambda b: b, 4)
+        a=providers.Callable(lambda a: a, a=3), b=providers.Callable(lambda b: b, config.b)
     )
     service = providers.Resource(init_service, counter, _list, _dict=_dict)
     service2 = providers.Resource(init_service, counter, _list, _dict=_dict)