re: Spring boot codebase structure VIEW POST

TOP OF THREAD FULL DISCUSSION
re: This could become very opinionated. But for my experience. I don't use the anonations of @Autowired, or and of the component scanning annonations s...
 

As far as project structure. I start with 2 modules Applications and components.

Applications are your microservices. They contain your spring boot dependencies, controllers and message listener code. The idea is they take the information off the wire and passes it onto your service layer which is in your components module. This way if the delivery protocol changes you only need to change your application layer code.

Components are broken out into multiple modules. I usually have one or more core module. The core module contains all or most of my interfaces, not the implementations, any pojos needed for the interfaces, helper classes and utils. These are split on domains depending on project size.

Repository implementations are all separate by domain and technology. For example, a contact domain may have 2 modules one for JDBC and one for HTTP.

Then I have a service module for the repositories which is what the applications interface with if need be. If the service layer is just a pass-through then I forgo the service layer.

code of conduct - report abuse