Let's create a Hello World
REST application in Java, and create a simple REST service that returns the Hello World
message on request. In this application, we will use Maven to build this project.
You would have noticed that whenever you create a simple project structure, you face some difficulties to create it. Where will you place configuration files, properties files, and so on, and build files with dependencies? Traditionally, to resolve this problem and find an easy solution for the project structure, you would have to go to Google and search multiple blogs. I have spent quite some time doing this!
However, things have changed because the Spring Boot team has provided a solution for the project structure. This is the Spring Boot Initializr.
The Spring Boot Initializr provides solutions to all these problems related to setup work, and it creates a more traditional Java project structure.
The Spring Boot Initializr is nothing but a web application that can create a Spring Boot project structure for you. It generates a basic project structure, either a Maven or Gradle build specification; it depends on you what you choose from the menu. But remember, it doesn't generate any application code. You can use this Spring Initializr in several ways:
- Spring Boot Initializr through a web-based interface (https://start.spring.io)
- You can also use it through an IDE such as Spring Tool Suite (STS) and IntelliJ IDEA
- Using the Spring Boot CLI
We will explore Spring Initializr with Spring Boot CLI in Chapter 3, Getting Started with Spring CLI and Actuator. Let's check the other two ways of using Spring Initializr and start with the web-based interface.
The Spring team provides a web application hosted at: https://start.spring.io. It is the most simple way to create a Spring Boot application and the most straightforward way to use the Spring Initializr. It has all the menu options for you, just choose them and use them in your application.
Let's see the following screenshot of what the home page look like:
As you can see, there are a number of options you need to fill in. They are:
- Project type: Maven or Gradle
- Language: Java, Kotlin, or Groovy
- Spring Boot version
On the SPRING INITIALZR
home page, on the left side of the form, it asks to specify minimum project metadata, so you must provide the project's Group
and Artifact
.
You can enter minimal details for whatever SPRING
INITIALZR
asks about your application, pick your build system, favorite language, and version of Spring Boot you wish to use, whatever you want. After that, choose your application's dependencies from the menu and also provide your project's Group
and Artifact
. Click the Generate Project
button, and we have a ready-to-run application.
Here, I have selected the Spring Boot 2.0.2,
Maven
build from the drop-down menu and Java
as the language from the drop-down menu. Next, I have given my project's Group
and Artifact
as follows:
- Group:
com.dineshonjava.masteringspringboot
- Artifact:
mastering-spring-boot
Let's see another interesting thing about the web-based interface. Once you click the Switch to the full version
link at the bottom of the web interface, it expands to provide more options. It lets you pick the ingredients for your application, like picking off a delicious menu. And also, you can specify additional metadata such as version and base package name.
As you can see in the previous screenshot, I have added some more ingredients such as project description, package name, packaging style (either JAR or WAR), and you could also choose a Java version as well. Let's click on the Generate Project
button on the form to have Spring Initializr generate a project for you.
Spring Initializr presents this project to you as a ZIP file, named as the value in the Artifact
field, that is downloaded by your browser. In our case, this ZIP file is named mastering-spring-boot.zip
.
Let's unzip this file and you will have a project structure as follows:
As you can see, there's very little code in this project and it also creates a couple of empty directories. The generated project contains the following:
pom.xml
: A Maven build specificationMasteringSpringBootApplication.java
: A class with amain()
method to bootstrap the applicationMasteringSpringBootApplicationTests.java
: An emptyJUnit
test class instrumented to load a Spring application context using Spring Boot auto-configurationapplication.properties
: An empty properties file for you to add configuration properties to as you see fitstatic
directory: Here, you can put any static content (JavaScript, style sheets, images, and so on) to be served from the web applicationtemplates
directory: Here, you can put templates that render model data
Finally, import this project to your favorite IDE. If you are using the Spring Tool Suite IDE, it supports creating Spring Boot applications, so you don't need to go to the web-based interface.
Let's have a look at how to create a Spring Boot project by using the STS IDE.
Spring Tool Suite is one of most popular IDEs for Java developers to develop Spring-based applications. If you don't have STS in your machine, first download the latest version of STS from the following link:
Let's create a new Spring Boot application in the STS by selecting the New
| Spring
Starter
Project
menu item from the File
menu. Let's see the following screenshot; STS will present you with a dialog box:
As you can see in the screenshot, this dialog box asks for the same information as the web-based Spring Initializr. So, let's fill it in with the same information, whatever we filled in the web-based Spring Initializr with.
Let's click the Next
button. It will present us with a second dialog box like the one shown in the following screenshot:
Let's click on the Finish
button. It will present the project structure in your workspace with the same directory structure and default file as the web-based approach presented to you in the ZIP file.
You must be connected to the internet in order for it to work, because STS internally delegates to the Spring Initializr at http://start.spring.io to produce the project.
Now that the project has been imported into your workspace, let's create your application files, such as controllers.