SpringBoot的优点,有哪些值得我们使用的地方。SpringBoot写一个web应用:helloworld。
开始
从今天起,我们开始SpringBoot之旅。本文是SpringBoot的入门demo:helloworld。
Sping蓝图Helloworld
再没有什么,比helloworld更能激起一个程序员的青春回忆了。
目标:实现一个web应用,通过访问/hello,得到helloworld字样。需要通过两种方式启动:在ide内和打包执行。
helloworld项目结构如下:
项目结构pom.xml核心内容如下:
Application.java核心内容如下:
HelloAction.java核心内容如下:
application.yml配置文件内容如下:
在ide中,执行Application.java的main方法,在控制台得到如下日志:
启动日志在浏览器中输入地址,得到正确结果。
执行mvncleanpackage指令,在target中得到如下文件:
打包结果通过java-jar命令执行helloworld-1.0-SHAPSHOT.jar包。(先关闭IDE中的执行进程,否则会报端口占用。)
在控制台看到相同内容,浏览器也得到正确结果。
SpringBoot是啥
本文适合的读者,默认具备一定的java编程经验,熟练使用IDE工具(如IDEA),会使用maven。如果无法顺利完成上述demo,建议先百度补充一些基础知识,再来学习本文。
一个简单的demo,却是整合了SpringBoot的精华,仔细分析,我们发现,它把SpringBoot的优势展露无疑。
简单的依赖方式。
有使用Spring开发过web应用经验的人应该深有感触。在使用时,不得不通过maven,在pom.xml配置一大块的依赖,如spring-web,spring-webmvc,spring-core,spring-context等一系列Spring家族的应用,还需要其它如日志、JSON转换等相关的jar包。而使用SpringBoot,你只需要将parent节点设置为spring-boot-starter-parent,再添加spring-boot-starter-web作为依赖项即可。打开查看项目所依赖的包,我们发现,SpringBoot把我们在开发web应用时,经常引用的一些包都引入到了项目里,截图如下:
引入依赖再回想一下之前的开发经历,我们发现,SpringBoot还帮我们解决了关于依赖的另外一个问题,版本冲突。
以前,在引入各个所需要jar包后,我们不得不注意jar包冲突的问题。而有了SpringBoot的帮助,我们完全不需要有此顾虑。SpringBoot已经为我们将常用的几乎绝大多数的jar包的版本号,写在了父依赖里。在使用时,我们不需要输入版本号,SpringBoot会为我们引入最合适的相应版本。
简单的配置方式。
在demo中,我们只通过YAML配置文件的方式,配置了一个端口号。事实上,这行配置在开发时可能也是多余的。demo中将端口号配置为80,是因为开发机器上,有其它服务占用了SpringBoot默认的端口号,所以,如果不重新配置端口号,就需要杀死占用端口的相应服务。
回想以前,一系列诸如context.xml类的配置文件,还有web.xml中的各种配置。SpringBoot,真香。
简单的代码方式。
demo较为简单,可能单从代码来说,demo中的代码和之前用Springmvc时,相差不多。但是,当你再深入学习时,如,你开始使用AOP,过滤器等其它web应用特性时,你就会发现,在代码上来说,SpringBoot也要更加简单。
简单的打包方式。
我们还发现了一个SpringBoot和以前的不同,就是程序执行和打包的方式。就执行上来说,SpringBoot使用一个main方法作为启动类,打包好后,也可以直接通过java-jar命令来执行。无需像以前一样,要通过一个tomcat或其它web窗口来运行。
打包时,也只需要一行命令,当然,这是因为pom.xml中引入的spring-boot-maven-plugin在打包时,帮助了我们。
简单的第三方接入
demo中,并没有涉及到第三方的一些框架,如ORM框架,消息组件框架等。但是,在我们以后的学习中,你会发现,使用SpringBoot,在接入第三方框架时,也是一样简单的另人舒适。基本上,一个相应的starter就可以搞定。
SpringBoot官宣
刚才,是我们自己总结的一些关于SpringBoot的优点,接下来,我们去看下SpringBoot的官宣,看看它是怎么自夸的。以下内容,从官方文档直译过来:
1.为所有Spring开发提供一个更快、更广泛的启动体验。
2.开箱即用,但当需求开始偏离默认值时,要迅速离开。
3.提供对大型项目类(如嵌入式服务器、安全性、度量、健康检查和外部化配置)常见的一系列非功能特性。
4.绝对不需要代码生成,也不需要XML配置。
5.这货英语是个渣渣。大家千万不要