I\'m currently learning Spring Boot and I\'ve seen how people create a controller, inject the service class and in the service class inject the repository.
Why do we
Layered architectures are generally suypported by this contention:
We use layers to allow us to abstract away the underlying implementation so we that we can easily change it.
A happy side effect of layering is that - if followed faithfully - it can make the system more testable by (a) using interfaces to define each layer and (b) encouraging separation of concerns.
So, that's the principle (briefly, at least) but like any principle it can be misunderstood and misapplied.
While the benefits of layering to hide data access from the view layer (and vice versa) are solid in most cases, the benefits of including a service layer between the view layer and the data layer are not always so compelling. A system which has ...
... probably doesn't need a service layer.
Whereas, a system which has ...
... probably does need a service layer.