The first thing that we will do is to visit start.spring.io webpage, which takes us to spring initializer application. Here we can configure our project, such as do we want to use Maven project or a Gradle project? I would like to use Maven project. You can code Spring Boot using Java or kotlin or groovy, I would choose Java and the Spring Boot version itself, which is two dot one dot seven. And you can give here your project details such as what is the group ID artifact ID? Let me give it as quarter note and spring boat demo.
There are a few options that you can explore such as, what is the description? What's the package name going to be? Is it a jar project or a war? Most of the time we would be using Spring Boot for creating micro services or web API's. So it's going to be tested JAR files. On project the version of Java, I would leave it to the default which is eight at this time.
And then you can add some dependencies by either typing here if you know what you're looking for, such as web security, JPA, actuator, Dev Tools, etc, as indicated over here, or you can click on the list here and choose some of them. For this project, I will only add one single dependency. And as and when we need we will add more. So I'm going to just type web and select the spring web starter, add this to our list. Now we can download the entire zip file consisting of the Maven project. Or I can explore individual files and choose whatever that I want.
So I choose to go with this explore the project option that will show me the palm d'Or XML and any other related files. I simply have to click the Copy button. That copies the content of palm d'Or XML to our clip. And then I'll go to eclipse. I have already opened Eclipse in a brand new workspace. As you can see there is nothing over here.
I will simply create a new Maven project click on this checkmark that says create a simple project. Next, I will be the group ID as code or Keynote. artifact ID as Spring Boot dash demo. I leave the version as zero dot zero dot one snapshot and packaging as jar. Click Finish to come out of this. Here is the project that got created which doesn't have anything except a palm d'Or XML.
Open the palm d'Or XML. replace that with the one that we copied from spring initializer. As soon as I save it, eclipse will start downloading all the jars from the dependency list. This may take a while in case if you're doing This for the first time. In my case, it has already done because I have worked on this kind of examples earlier. So all the Maven dependencies have come to my project right now.
But you may see that there are a couple of errors over here that says Maven configuration problem. Number one, it says unknown, so we can ignore this. The second one says, project configuration is not up to date with palm d'Or XML, and select Maven update project from the project context menu, or use quick fix. All we have to do is to right click the project. Go to Maven update project. I'll say OK, and the errors are gone.
Let's close this. Create a new Java class that acts as a starting point for our application. So I'm going to right click on this SRC main Java new class I'll get the package as code on the note. And the name of the class happens to be application. You can give any name you want, I just wanted to give application. The application is simply going to have one main function.
And I'm going to say your spring application dot run, and then I supply the application class itself. One last thing I have to do is to say that this is a Spring Boot project by adding an annotation at the rate Spring Boot application. Save this and now I can run the code when I run this program. Spring will run an internal Tomcat server and blocks the Port 8080. In my case, however, 8080 has been used by Jenkins as you can see here, it has been used by Jenkins. So I have two options, either Stop Jenkins at 800.
And although this spring application to run on 800. Or I can ask spring to use a different port number. Now this can be done by adding a properties file to our resources section. So I'm going to add here a file by going to new other general file. And let's name this as application dot properties. Now these properties can be configured either using application dot properties, or application dot yml, or application or Iam will file.
For this demo, I will stick with application dot properties. And all I have to do is to say server dot port equals to a port of my choice. Let's give it us 7777. Save this, close this application dot properties, right click on this file, run as Java application As soon as I do that, on the console, you can see that it comes up with lots of logs. That includes logs from Tomcat, saying that Tomcat started at port number 777. Started application in 5.903 seconds.
And as you can see that the application is still running, it has not quit, it's not terminated, I can forcefully terminate that over here. But if I want, I can go to a browser and access this localhost colon 7777. And then press Enter. And we get some white label error. But of course, this is an output coming from our project. Now let's add some greeting message over here instead of this error page.
So let's go back to our code and write a function here called public string. Say hello. which returns a Hello World message But if I want this particular function to respond to this browser request, we have to add two annotations here. Number one, we have to say that this the restful controller by typing at the rate rest controller. And then we have to add a mapping to this particular function saying that whenever the user makes a get request for localhost 777, we want to actually respond from here. So that can be done by typing at the rate, get mapping.
Save this. Now note that the previously run program has to be stopped. If I want to run this again, so I have stopped it. I right click on this program, run as Java application. A similar output comes just like the previous one. And now I can come back to the browser Refresh the same.
And we should see here, hello, world message came up. Now if I want to change the message, I can change this. But then again, I have to click the Stop button, and then run the program again. Now since we want to develop Web Services quickly, this can be a hurdle. So what we can do now is I can stop this for a minute, and then add a dependency from spring initializer called as dev tools. So all I have to do is to add the dev tools as dependencies.
Get the new palm d'Or XML and then replace the current POM dot XML with the new content. Save it and you will see that Eclipse is downloading the newer version, and it's updated. Now I can actually run this project once And then change the content whenever I want. And every time there is something changed and the file has been saved, the file gets compiled. And automatically dev tools will reload this once again. For example, instead of hello world.
I can say hello Spring Boot. Save it. And you can see that there is a reloading of the server. I go back to the browser, refresh this once again. And you will see that it says hello Spring Boot again.