Dependencies used are as follows:
3 layer Architecture : Client <--> Controller <--> Service <--> DAO <--> DB
- Controller
  - Keeps all spring REST controllers
  - Define end points
- Service
  - all service classes that hold business logic
- DAO
  - Repository layer
  - keep all spring JPA data repository
  - Communicates with database
- controller
  - Contains all Spring MVC controllers
- entity
  - Contains all JPA entities
- service
  - Contains service interfaces
- service.impl
  - Contains servie classes
- utils
  - Contains utilities and classes
- repository
  - Contains Spring Data JPA repositories. (JPA repositories are by default Transactional. Default implementation class of the JpaRepository interface is SimpleJpaRepository class)
- exception
  - Contains all custom exceptions
- payload
  - Contains DTOs (Data Transfer Objects) that act as a payload between client and server
OpenAPI 3 specification document for API is auto generated using springdoc-openapi-ui
As per custom path provided in application.properties, auto generated API doc is generated at custom path:
http://localhost:<port>/api-docs/ 
Doc can also be accessed in the Swagger UI at path:
http://localhost:<port>/swagger-ui.html