1.1.1 崭新的眼光看待Spring
假定你有一个任务,使用Spring开发一个非常简单的HelloWorld的web应用程序。你需要做什么呢?我能想到的东西屈指可数,你会 需要最低限度:
- 一个项目结构,使用Maven或者Gradle来构建依赖,至少,你需要SpringMVC和ServletAPI来作为依赖
- 一个web.xml文件,或者WebApplicationInitializer的实现,并且生命Spring的DispatcherServlet
- 一个Spring配置,使得SpingMVC生效
- 一个Controller类,可以响应“HelloWorld”的HTTP请求
- 一个web应用程序服务器,比如Tomcat,来部署应用到上面。
以上列表中最引人瞩目的一个其实只有一个是明确用来开发HelloWorld功能的:the Controller。其余的都是样板化的,在任何一个使用Sping开发的web应用程序中都会需要,你为什么还总要提供呢?
假定有这么一种情况,只有controller是你需要的。最终证明,代码清单1-1中的基于Groovy的Concoller就是一个Spring应用程序完整的例子。
代码清单1-1
@RestController
class HelloController {
@RequestMapping("/")
def hello() {
return "Hello World"
}
}
这里并没有过多的配置,没有Web.xml,不需要构建规范,甚至不需要应用程序服务器。这便是整个应用程序。Spring Boot会处理执行应用程序的组织工作。你只需要准备你的程序代码即可了。
假定你已经安装了Spring Boot CLI,你可以在命令行执行HelloController,如下所示:
$ spring run HelloController.groovy
你可能也注意到,甚至不需要编译代码,Spring Boot CLI可以以未编译的形式运行。
我选择使用Groovy写这个例子是因为使用Groovy语言可以很好的展现SpringBoot的简单性。当然,Spring Boot不一定非得需要你使用Groovy。事实上,本书中大多数写的代码我将会使用Java语言,不过可能会有一些Groovy语言穿插其中,这样更合适一些。
你可以提前看下1.21,安装下Spring Boot CLI,试着运行下这个小web应用程序,这样你可以感觉到Spring Boot为Spring应用程序的开发带提供了那些关键部分。