What is the recommended project structure for spring boot rest projects?

JavaSpringRestSpring Boot

Java Problem Overview


I'm a beginner with spring boot. I'm involved in the beginning of a project where we would build rest services using spring boot. Could you please advise the recommended directory structure to follow when building a project that will just expose rest services?

Java Solutions


Solution 1 - Java

From the docs:, this is the recommended way

The following listing shows a typical layout:

com 
	+- example 
		+- myapplication 
			+- Application.java 
			+- customer 
				+- Customer.java 
				+- CustomerController.java 
				+- CustomerService.java 
				+- CustomerRepository.java 
			+- order 
				+- order.java 
				+- OrderController.java 
				+- OrderService.java 
				+- OrderRepository. java 
				

The Application. java file would declare the main method, along with the basic SpringBootApplication as follows:

package com.example.myapplication; 
import org. springframework.boot.springApplication; 
import org.springframework.boot.autoconfigure.SprinpootApplication; 

@SpringRootApplication public class Application { 
	public static void main(string[] args) 
		{ 
			springApplication.run(Application. class, args); 
		}
}

Solution 2 - Java

config - class which will read from property files

cache - caching mechanism class files

constants - constant defined class

controller - controller class

exception - exception class

model - pojos classes will be present

security - security classes

service - Impl classes

util - utility classes

validation - validators classes

bootloader - main class

Solution 3 - Java

You do not need to do anything special to start. Start with a normal java project, either maven or gradle or IDE project layout with starter dependency.

You need just one main class, as per guide here and rest...

There is no constrained package structure. Actual structure will be driven by your requirement/whim and the directory structure is laid by build-tool / IDE

You can follow same structure that you might be following for a Spring MVC application.

You can follow either way

  • A project is divided into layers:

for example: DDD style

  • Service layer : service package contains service classes

  • DAO/REPO layer : dao package containing dao classes

  • Entity layers


    or

    any layer structure suitable to your problem for which you are writing problem.

  • A project divided into modules or functionalities or features and A module is divided into layers like above

I prefer the second, because it follows Business context. Think in terms of concepts.

What you do is dependent upon how you see the project. It is your code organization skills.

Solution 4 - Java

Though this question has an accepted answer, still I would like to share my project structure for RESTful services.

src/main/java
    +- com
        +- example
            +- Application.java
            +- ApplicationConstants.java
                +- configuration
                |   +- ApplicationConfiguration.java
                +- controller
                |   +- ApplicationController.java
                +- dao
                |   +- impl
                |   |   +- ApplicationDaoImpl.java
                |   +- ApplicationDao.java
                +- dto
                |   +- ApplicationDto.java
                +- service
                |   +- impl
                |   |   +- ApplicationServiceImpl.java
                |   +- ApplicationService.java
                +- util
                |   +- ApplicationUtils.java
                +- validation
                |   +- impl
                |   |   +- ApplicationValidationImpl.java
                |   +- ApplicationValidation.java

DAO = Data Access Object.
DTO = Data Transfer Object.

Solution 5 - Java

Use Link-1 to generate a project. this a basic project for learning. you can understand the folder structure. Use Link-2 for creating a basic Spring boot project. 1: http://start.spring.io/ 2: https://projects.spring.io/spring-boot/

Create a gradle/maven project Automatically src/main/java and src/main/test will be created. create controller/service/Repository package and start writing the code.

-src/main/java(source folder) ---com.package.service(package) ---ServiceClass(Class) ---com.package.controller(package) ---ControllerClass(Class)

Solution 6 - Java

Please use Spring Tool Suite (Eclipse-based development environment that is customized for developing Spring applications).
Create a Spring Starter Project, it will create the directory structure for you with the spring boot maven dependencies.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionchipView Question on Stackoverflow
Solution 1 - JavaENDEESAView Answer on Stackoverflow
Solution 2 - JavaSubhasish SahuView Answer on Stackoverflow
Solution 3 - JavaThe Mighty ProgrammerView Answer on Stackoverflow
Solution 4 - JavaAmar Prakash PandeyView Answer on Stackoverflow
Solution 5 - JavaRahul KumarView Answer on Stackoverflow
Solution 6 - JavaJobinView Answer on Stackoverflow