Spring Boot CLI(Command Line Interface)是一個命令行工具,您可以用它來快速構(gòu)建Spring原型應(yīng)用。通過Spring Boot CLI,我們可以通過編寫Groovy腳本來快速的構(gòu)建出Spring Boot應(yīng)用,并通過命令行的方式將其運行起來再悼。下來,我們來學(xué)習(xí)一下如何安裝和使用Spring Boot CLI膝但。
安裝Spring Boot CLI
關(guān)于Spring Boot CLI的安裝方式有很多冲九,這里根據(jù)目前主要主流的開發(fā)平臺,具體介紹一下Windows和Mac下的安裝方式:
通用安裝
先介紹一個所有平臺都可以使用的安裝方法跟束。
第一步:下載Spring Boot CLI的工具包:
第二步:解壓下載內(nèi)容娘侍,可以看到bin目錄下已經(jīng)有適用于windows和linux平臺的兩個可執(zhí)行文件了,我們已經(jīng)可以直接使用它泳炉;為了更方便的使用Spring Boot CLI的命令,我們可以將上面bin目錄中對應(yīng)的可執(zhí)行文件加入到當前系統(tǒng)的環(huán)境變量即可嚎杨。
Mac OSX Brew安裝
在Mac OSX系統(tǒng)下面就非常方便了花鹅,我們可以通過Brew來進行安裝,只需要分別執(zhí)行下面的兩條的命令即可:
$ brew tap pivotal/tap
$ brew install springboot
驗證安裝
不論使用哪種方法安裝枫浙,在安裝好之后刨肃,我們可以通過下面的命令來驗證一下當前的安裝結(jié)果:
$ spring --version
Spring CLI v2.0.0.RELEASE
運行Groovy腳本
在完成了Spring Boot CLI的安裝之后,我們來試試使用它來快速的構(gòu)建一個Spring Boot應(yīng)用箩帚,方法很簡單真友,只需要如下操作:
第一步:新建一個Groovy腳本,hello.groovy
紧帕,內(nèi)容如下:
@RestController
class ThisWillActuallyRun {
@RequestMapping("/")
String home() {
"Hello World!"
}
}
第二步:使用spring
命令運行該Groovy腳本盔然,具體如下:
$ spring run hello.groovy
Resolving dependencies...............................................
*::::::::::::::*
::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::: :.
*::::::::::::::::::::::::::::::::::::: :*:
::::::::::::::::::::::::::::::::::::::::::: *:
.:::::::::::::::::::::::::::::::::::::::::: :
::::::::::::::::::::::::::::::::::::::::::. .:
::::::::::::::::::::::::::::::::::::::::: :
:::::::::::::::::::::::::::::::::::::: *:
:::::::::::::::::::::::::::::::::* :
:::::::::::::::::::* :
::::::::::::::: * *:
.:::::::::::: * .:
:::::::::::. : :
:::::::::: : .:
:::::::::: :: .:
.:::::::: ::: :*
:::::::: ::: :
:::::::: :::: ::
::::::: ::::: *:
::::::: *::::::: ::
:::::::. ::::::::::: :::
:::::::::::::::::::::::* ::::
.::: :::::::::* .:::::*
: ::::::::::::::::::::::::::::::::::::
. .:::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::
*::::::::::::::*
2018-04-04 18:11:20.571 INFO 70477 --- [ runner-0] o.s.boot.SpringApplication : Starting application on zhaiyongchaodeMacBook-Pro.local with PID 70477 (started by zhaiyongchao in /Users/zhaiyongchao/Downloads)
2018-04-04 18:11:20.574 INFO 70477 --- [ runner-0] o.s.boot.SpringApplication : No active profile set, falling back to default profiles: default
2018-04-04 18:11:20.732 INFO 70477 --- [ runner-0] ConfigServletWebServerApplicationContext : Refreshing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@3c3ad454: startup date [Wed Apr 04 18:11:20 CST 2018]; root of context hierarchy
2018-04-04 18:11:21.758 INFO 70477 --- [ runner-0] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
2018-04-04 18:11:21.783 INFO 70477 --- [ runner-0] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2018-04-04 18:11:21.784 INFO 70477 --- [ runner-0] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/8.5.28
2018-04-04 18:11:21.795 INFO 70477 --- [ost-startStop-1] o.a.catalina.core.AprLifecycleListener : The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [/Users/zhaiyongchao/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.]
2018-04-04 18:11:21.849 INFO 70477 --- [ost-startStop-1] org.apache.catalina.loader.WebappLoader : Unknown loader org.springframework.boot.cli.compiler.ExtendedGroovyClassLoader$DefaultScopeParentClassLoader@5e3b901 class org.springframework.boot.cli.compiler.ExtendedGroovyClassLoader$DefaultScopeParentClassLoader
2018-04-04 18:11:21.884 INFO 70477 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2018-04-04 18:11:21.885 INFO 70477 --- [ost-startStop-1] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 1153 ms
2018-04-04 18:11:22.042 INFO 70477 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean : Servlet dispatcherServlet mapped to [/]
2018-04-04 18:11:22.049 INFO 70477 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'characterEncodingFilter' to: [/*]
2018-04-04 18:11:22.049 INFO 70477 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
2018-04-04 18:11:22.049 INFO 70477 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'httpPutFormContentFilter' to: [/*]
2018-04-04 18:11:22.049 INFO 70477 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'requestContextFilter' to: [/*]
2018-04-04 18:11:22.391 INFO 70477 --- [ runner-0] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@3c3ad454: startup date [Wed Apr 04 18:11:20 CST 2018]; root of context hierarchy
2018-04-04 18:11:22.489 INFO 70477 --- [ runner-0] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/]}" onto public java.lang.String ThisWillActuallyRun.home()
2018-04-04 18:11:22.495 INFO 70477 --- [ runner-0] 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.servlet.error.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2018-04-04 18:11:22.496 INFO 70477 --- [ runner-0] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2018-04-04 18:11:22.550 INFO 70477 --- [ runner-0] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2018-04-04 18:11:22.550 INFO 70477 --- [ runner-0] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2018-04-04 18:11:22.598 INFO 70477 --- [ runner-0] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2018-04-04 18:11:22.955 INFO 70477 --- [ runner-0] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup
2018-04-04 18:11:23.004 INFO 70477 --- [ runner-0] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
2018-04-04 18:11:23.010 INFO 70477 --- [ runner-0] o.s.boot.SpringApplication : Started application in 17.605 seconds (JVM running for 79.248)
從日志中我們可以看到我們通過Groovy腳本定義的一個簡單web應(yīng)用就構(gòu)建成功了,可以通過訪問localhost:8080
來驗證一下上面應(yīng)用提供的接口:
$ curl localhost:8080
Hello World!
是不是非常簡單是嗜?有木有顛覆您對Java應(yīng)用的印象愈案?