In the previous Spring Boot Hello World example we build our application with Maven through command prompt. In this article, we will be building the same Spring Boot Hello World example using IDE. I will be using Spring Tool Suite(STS) for development, you can also use Eclipse along with m2eclipse plugin.
Spring Boot Hello World Example
Folder Structure:
- Create a simple Maven Project “SpringBootTutorial” by selecting maven-archetype-quickstart and create a package for our source files “com.javainterviewpoint” under src/main/java
- Now add the following dependency in the POM.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.javainterviewpoint</groupId> <artifactId>SpringBootTutorial</artifactId> <version>0.0.1-SNAPSHOT</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.1.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
- Create the Java classes HelloWorld.java under com.javainterviewpoint folder.
The spring-boot-starter-parent is a special starter, it provides useful Maven defaults. Since we are developing a web application, we also need to add spring-boot-starter-web dependency.This will additional dependencies such Tomcat, Jackson, Spring boot etc which are required for our application.
HelloWorld.java
Place HelloWorld.java under com.javainterviewpoint folder
package com.javainterviewpoint; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @EnableAutoConfiguration public class HelloWorld { @RequestMapping("/") String hello() { return "Hello World! JavaInterviewPoint"; } public static void main(String[] args) throws Exception { SpringApplication.run(HelloWorld.class, args); } }
We have added the below annotations in our HelloWorld class
- @RestController – This annotation is a stereotype annotation, this annotation tells spring to render the result back to the caller.
- @RequestMapping – This annotation will any HTTP request with the path “/” should be mapped to the hello() method
- @EnableAutoConfiguration – This annotation tells the Spring Boot to configure the application based on the dependencies added. Since spring-boot-starter-web has added Tomcat and Spring MVC, auto-configuration will setup a web based application.
Our main() method is the triggering point of our java application, it in-turn calls Spring Boot’s SpringApplication class run() method which bootstraps our HelloWorld application and starts the tomcat server. We need to pass our HelloWorld.class as an argument to our run() method.
Execution :
We will be running our HelloWorld class in two different ways.
- Run As Spring Boot App(Only in STS)
- Run As Configuration
1. Run As Spring Boot App(STS)
Select the Project –>Run As –> Spring Boot App
Console
. ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v1.5.1.RELEASE) 2017-02-24 15:14:04.568 INFO 1112 --- [ main] com.javainterviewpoint.HelloWorld : Starting HelloWorld on DA56CZ8VD02 with PID 1112 (C:\Jackson\sts\JIPWorkspace\SpringBootTutorial\target\classes started by xbbl47m in C:\Jackson\sts\JIPWorkspace\SpringBootTutorial) 2017-02-24 15:14:04.570 INFO 1112 --- [ main] com.javainterviewpoint.HelloWorld : No active profile set, falling back to default profiles: default 2017-02-24 15:14:04.622 INFO 1112 --- [ main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@2e3593ab: startup date [Fri Feb 24 15:14:04 IST 2017]; root of context hierarchy 2017-02-24 15:14:05.432 INFO 1112 --- [ main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.boot.autoconfigure.validation.ValidationAutoConfiguration' of type [class org.springframework.boot.autoconfigure.validation.ValidationAutoConfiguration] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) 2017-02-24 15:14:05.533 INFO 1112 --- [ main] trationDelegate$BeanPostProcessorChecker : Bean 'validator' of type [class org.springframework.validation.beanvalidation.LocalValidatorFactoryBean] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) 2017-02-24 15:14:05.933 INFO 1112 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8080 (http) 2017-02-24 15:14:05.952 INFO 1112 --- [ main] o.apache.catalina.core.StandardService : Starting service Tomcat 2017-02-24 15:14:05.953 INFO 1112 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/8.5.11 2017-02-24 15:14:06.059 INFO 1112 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2017-02-24 15:14:06.059 INFO 1112 --- [ost-startStop-1] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 1439 ms 2017-02-24 15:14:06.206 INFO 1112 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean : Mapping servlet: 'dispatcherServlet' to [/] 2017-02-24 15:14:06.210 INFO 1112 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'characterEncodingFilter' to: [/*] 2017-02-24 15:14:06.210 INFO 1112 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/*] 2017-02-24 15:14:06.210 INFO 1112 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'httpPutFormContentFilter' to: [/*] 2017-02-24 15:14:06.210 INFO 1112 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'requestContextFilter' to: [/*] 2017-02-24 15:14:06.522 INFO 1112 --- [ main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@2e3593ab: startup date [Fri Feb 24 15:14:04 IST 2017]; root of context hierarchy 2017-02-24 15:14:06.614 INFO 1112 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/]}" onto java.lang.String com.javainterviewpoint.HelloWorld.hello() 2017-02-24 15:14:06.619 INFO 1112 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest) 2017-02-24 15:14:06.619 INFO 1112 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) 2017-02-24 15:14:06.654 INFO 1112 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 2017-02-24 15:14:06.654 INFO 1112 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 2017-02-24 15:14:06.700 INFO 1112 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 2017-02-24 15:14:06.938 INFO 1112 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup 2017-02-24 15:14:07.016 INFO 1112 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http) 2017-02-24 15:14:07.021 INFO 1112 --- [ main] com.javainterviewpoint.HelloWorld : Started HelloWorld in 2.832 seconds (JVM running for 3.398)
hit on the URL “http://localhost:8080”
2. Run As Configuration
Select the Project –>Run As –> Run Configuration –>Maven –> New. In the Main tab, key in the Goals as “spring-boot: run” and click on Run.
Ishan Khanna says
This article helped.