This is an amazing read, Ruby. I am new to Spring and I see projects at my work is using just this very thing. There is a controller layer which has all the REST endpoints and talks to service layer (however our Service layers are not interfaces but concrete implementations. But I totally get the logic of using an interface instead). And the service layer then talks to the inside domain objects. The domain objects talk to objects implementing technical details like API calls, Database calls, etc.
Could you please explain more like how do we structure our app so it doesn’t look like a Spring app that does accounting from the top directory structure, but instead an accounting app that uses spring (and can easily be plugged out and replaced with some other framework)?
The intention is, the structure should say it’s an accounting app and I want the reader to dig into and then find out its using spring. And not the other way round. I wish my app structuring could convey the intent of the application and not the tool it is using.
Could you please write more about it?