”;
Let”s create a sample Thymeleaf based project to demonstrate the capabilities of Spring CLI. Follow the below mentioned step to create a sample project.
Step | Description |
---|---|
1 | Create a Folder with a name TestApplication with subfolders templates and static. |
2 | Create message.groovy in TestApplication folder, message.html in templates folder, index.html in static folder as explained below. |
3 | Compile and run the application to verify the result of the implemented logic. |
TestApplication/message.groovy
@Controller @Grab(''spring-boot-starter-thymeleaf'') class MessageController { @RequestMapping("/message") String getMessage(Model model) { String message = "Welcome to TutorialsPoint.Com!"; model.addAttribute("message", message); return "message"; } }
TestApplication/templates/message.html
<!DOCTYPE HTML> <html xmlns:th="http://www.thymeleaf.org"> <head> <title>Spring Boot CLI Example</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head> <body> <p th:text="''Message: '' + ${message}" /> </body> </html>
TestApplication/static/index.html
<!DOCTYPE HTML> <html> <head> <title>Spring Boot CLI Example</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head> <body> <p>Go to <a href="/message">Message</a></p> </body> </html>
Run the application
Type the following command
E:/Test/TestApplication/> spring run *.groovy
Now Spring Boot CLI will come into action, download required dependencies, run the embedded tomcat, deploy the application and start it. You can see the following output on console.
. ____ _ __ _ _ /\ / ___''_ __ _ _(_)_ __ __ _ ( ( )___ | ''_ | ''_| | ''_ / _` | \/ ___)| |_)| | | | | || (_| | ) ) ) ) '' |____| .__|_| |_|_| |___, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.6.3) 2022-02-03 11:36:33.362 INFO 10764 --- [ runner-0] o.s.boot.SpringApplication : Starting application using Java 11.0.11 on DESKTOP-86KD9FC with PID 10764 (started by intel in E:TestTestApplication) 2022-02-03 11:36:33.372 INFO 10764 --- [ runner-0] o.s.boot.SpringApplication : No active profile set, falling back to default profiles: default 2022-02-03 11:36:35.743 INFO 10764 --- [ runner-0] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http) 2022-02-03 11:36:35.768 INFO 10764 --- [ runner-0] o.apache.catalina.core.StandardService : Starting service [Tomcat] 2022-02-03 11:36:35.769 INFO 10764 --- [ runner-0] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.56] 2022-02-03 11:36:35.829 INFO 10764 --- [ runner-0] org.apache.catalina.loader.WebappLoader : Unknown class loader [org.springframework.boot.cli.compiler.ExtendedGroovyClassLoader$DefaultScopeParentClassLoader@553a3d88] of class [class org.springframework.boot.cli.compiler.ExtendedGroovyClassLoader$DefaultScopeParentClassLoader] 2022-02-03 11:36:35.896 INFO 10764 --- [ runner-0] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2022-02-03 11:36:35.897 INFO 10764 --- [ runner-0] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 2085 ms 2022-02-03 11:36:36.436 INFO 10764 --- [ runner-0] o.s.b.a.w.s.WelcomePageHandlerMapping : Adding welcome page: class path resource [static/index.html] 2022-02-03 11:36:37.132 INFO 10764 --- [ runner-0] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path '''' 2022-02-03 11:36:37.153 INFO 10764 --- [ runner-0] o.s.boot.SpringApplication : Started application in 4.805 seconds (JVM running for 8.633) 2022-02-03 11:37:03.049 INFO 10764 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet ''dispatcherServlet'' 2022-02-03 11:37:03.049 INFO 10764 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet ''dispatcherServlet'' 2022-02-03 11:37:03.054 INFO 10764 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 3 ms
Browse the application in Browser
Our spring based rest application is now ready. Open url as “http://localhost:8080/” and you will see the following output.
Go to Message
Click on Message link and you will see the following output.
Message: Welcome to TutorialsPoint.Com!
Points to consider
Following actions are taken by Spring CLI.
-
@Grab(”spring-boot-starter-thymeleaf”) annotation directs CLI to download spring-boot-starter-thymeleaf 2.6.3 version.
-
Spring CLI automatically detects the version using its metadata as we”ve not specified any group id or version id here.
-
Finally it compiles the code, deploy the war on a embedded tomcat, start embedded tomcat server on the default port 8080.
”;