Is there a Clojure equivalent to the Zope ZCA component lookup system?

Hi folks, long shot of people knowing it, but maybe? In Python, there is a DI system called the Zope Component Architecture. It works a lot like Integrant (and was one of the first of such systems back in the 90’s in its first version). It’s true brilliance is that you can get components out by adapter look up. In essence you can say for example: “I (the web controller) want the database component that fulfills this job.” and the ZCA will take into account the interfaces attached to what you are after and who is doing the requesting.

I’m curious to now if any of the clojure component systems do something similar, or if anyone here is familiar with the ZCA, what would be equivalents or replacements. It was a very nice way to write “clean architecture” systems. The Pyramid and Repoze frameworks were based on it in Python, which were very similar in spirit and style to Kit from what I can see.


I’m not sure if this solves your problem, but Integrant does support derived keywords, so you could probably implement something akin to what you describe with them.

Relevant bit of the docs

Thanks, yeah I found that, and while I’m unsure where Integrant or Component make the most sense as a basis on which to build something similar, derived keywords are definitely the ticket for the equivalent of the interface look up!