本文来自网易云社区

Spring Boot是什么

从根本上来讲Spring Boot就是一些库的集合,是一个基于“约定优于配置”的原则,快速搭建应用的框架。本质上依然Spring,在这之上帮我们省去了很多样板化的配置,使得我们能够更专注于应用程序功能的开发。

Spring Boot精要

SpringBoot将很多魔法带入了Spring应用程序的开发之中,其中最重要的是以下四个核心

  • 自动配置:针对常见的应用功能,SpringBoot自动提供相关的配置,减少用于样板化配置的时间

  • 起步依赖:指定基于功能的依赖,用更大粒度的依赖来降低依赖的复杂度

  • 命令行界面:这是SpringBoot的可选特性,借此你只需要写代码就能完成完整的应用程序,无需传统项目构建

  • Actuator:让你能够深入运行中的SpringBoot应用程序一探究竟

从Spring开始

为了体现SpringBoot的优势,我们先来看看如果使用Spring开发一个简单的Hello World Web应用程序,我们需要做的事情:

  • 一个项目结构,其中有一个包含必要依赖的Maven或者Gradle构件文件,最起码要有Spring MVC和Servlet API这些依赖

  • 一个web.xml文件(或者一个WebApplicationInitializer实现),其中声明了Spring的DispatcherServlet

  • 一个启用Spring MVC的Spring配置

  • 一个控制器类,以"Hello World"响应HTTP请求

  • 一个用于部署应用程序的Web应用服务器,比如Tomcat

可以看到上面一系列的事中只有编写控制器是和HelloWorld功能相关的,虽然现代的IDE也能帮我们简化掉一些步骤,但是Spring相关的配置就算从别的工程拷贝也还是逃不了这一步。

接下来让我们来看下用Spring Boot是什么样的情况。

Spring Boot开箱即用

你上次在超市或大型零售商店自己推开门是什么时候?大多数大型商店都安装了带感应功能的自动门,虽然所有门都能让你进入建筑物内,但自动门不用你动手推拉。 与之类似,很多公共场所的卫生间里都装有自动感应水龙头和自动感应纸巾机。虽然没有超市自动门这么普及,但这些设施同样对你没有太多要求,可以很方便地出水和纸巾。 我敢打赌你也能想出无数例子,证明设备让现代生活更加自动化,而不是增加障碍。

下面通过一个例子来展示Spring Boot是如何开箱即用的。 依然是Hello World Web项目,我们来看下如何用InteliJ IDEA来创建。 点击IDEA的File-New-Project...,选择左边选项卡中的Spring Initializr,可以看到如下界面。

使用默认的https://start.spring.io,这将会连接网络,查询Spring Boot当前可用版本和组件列表。(当前时间用的是Spring Boot的2.0.0.RELEASE)

Next-输入项目信息-Next,来到选择起步依赖界面,如下:

对于一个简单的Hello World Web项目来说,这里只用勾选Web即可(我在这里另外勾选了Thymeleaf,在窗口的最右边可以看到)。 在这个界面可以看到Spring Boot为我们提供的大量的起步依赖。我们所勾选的web会为我们注入Web相关的所有依赖,省去我们自己配置依赖的时间。

再点击一次Next工程就新建完成了,等待下载相关的Maven依赖(第一次所花费的时间可能比较久)和IDEA创建索引。

创建完成后,项目结构如下图所示:

是一个常见的Maven项目结构,比较特别的是Spring Boot为我们自动生成了2个文件,application.properties和BlogDemoApplication.java。

application.properties是Spirng Boot默认的配置文件,当期是个空文件,现在不用理会后面会细讲。

BlogDemoApplication.java是Spring Boot自动生成的启动类。有了这个类,现在这个项目已经是一个可以启动的Web项目了,虽然还没有任何控制器,我们依然可以试着访问默认端口8080。 如果IDEA没有自动创建启动配置,可以自行到Run/Debug Configurations里添加。添加时选择Spring Boot,在右边选框的"Main class"中选择自动生成的启动类,如下:

点击运行后,访问8080端口将得到Spring Boot默认的错误页:

接着就可以开发我们的功能了——Hello World。

@Controller@RequestMapping("/demo")public class HelloWorldController {    @RequestMapping("/hello")    @ResponseBody
    public String hello(){        return "hello";
    }
}

很简单一个Controller,最后再次启动项目,已经能愉快的hello了!

小结

回顾一下,去掉啰嗦的介绍,实际上的操作只有点点点、输入项目名、再编写一下Controller就完成了一个Hello World。仿佛回到了初学Java的年代,那时候还是Eclipse,也是点点点、输入项目名、然后编写一个main方法控制台输出一个hello。步骤相似,然而这次得到的已然是一个拥有众多Spring特性的一个Web工程。

相关阅读:SpringBoot入门(一)——开箱即用

SpringBoot入门(二)——起步依赖

SpringBoot入门(三)——入口类解析

SpringBoot入门(四)——自动配置

SpringBoot入门(五)——自定义配置

网易云新用户大礼包:https://www.163yun.com/gift

本文来自网易云社区,经作者金港生授权发布。

SpringBoot入门(一)——开箱即用的更多相关文章

  1. SpringBoot入门(三)——入口类解析

    本文来自网易云社区 上一篇介绍了起步依赖,这篇我们先来看下SpringBoot项目是如何启动的. 入口类 再次观察工程的Maven配置文件,可以看到工程的默认打包方式是jar格式的. <pack ...

  2. SpringBoot入门(五)——自定义配置

    本文来自网易云社区 大部分比萨店也提供某种形式的自动配置.你可以点荤比萨.素比萨.香辣意大利比萨,或者是自动配置比萨中的极品--至尊比萨.在下单时,你并没有指定具体的辅料,你所点的比萨种类决定了所用的 ...

  3. SpringBoot入门(四)——自动配置

    本文来自网易云社区 SpringBoot之所以能够快速构建项目,得益于它的2个新特性,一个是起步依赖前面已经介绍过,另外一个则是自动配置.起步依赖用于降低项目依赖的复杂度,自动配置负责减少人工配置的工 ...

  4. SpringBoot入门(二)——起步依赖

    本文来自网易云社区 在前一篇我们通过简单几步操作就生成了一个可以直接运行的Web程序,这是因为SpringBoot代替我们做了许多工作,概括来讲可以分为起步依赖和自动配置.这一篇先来看看起步依赖. 项 ...

  5. springBoot入门教程(图文+源码+sql)

    springBoot入门 1   springBoot 1.1 SpringBoot简介 Spring Boot让我们的Spring应用变的更轻量化.比如:你可以仅仅依靠一个Java类来运行一个Spr ...

  6. springboot入门以及配置文件

    springboot入门以及配置文件 SpringBoot是什么? Spring Boot它本身并不提供Spring框架的核心特性以及扩展功能,只是用于快速.敏捷地开发新一代基于Spring框架的应用 ...

  7. Springboot入门及配置文件介绍(内置属性、自定义属性、属性封装类)

    目的: 1.Springboot入门 SpringBoot是什么? 使用Idea配置SpringBoo使用t项目 测试案例 2.Springboot配置文件介绍 内置属性 自定义属性 属性封装类 Sp ...

  8. SpringBoot入门详细教程

    一.SpringBoot入门 1.SpringBoot简介 SpringBoot是整个Spring技术栈的整合,来简化Spring应用开发,约定大于配置,去繁从简,just run 就能创建一 个独立 ...

  9. SpringBoot入门及深入

    一:SpringBoot简介 当前互联网后端开发中,JavaEE占据了主导地位.对JavaEE开发,首选框架是Spring框架.在传统的Spring开发中,需要使用大量的与业务无关的XML配置才能使S ...

随机推荐

  1. JavaWeb之session应用

    session和cookie都是用来存储信息的,区别是session是在服务器端存储信息,而cookie则是在浏览器端存储信息. 通常服务器端存储session,服务器端存储和获取session,一般 ...

  2. 利用python进行数据分析——(一)库的学习

    总结一下自己对python常用包:Numpy,Pandas,Matplotlib,Scipy,Scikit-learn 一. Numpy: 标准安装的Python中用列表(list)保存一组值,可以用 ...

  3. Arduino 入门之小星星

    原理:通过编号映射不同的频率音频信号,配合延时输出,达到演奏音乐和跑马灯的效果. 优酷视频链接:https://v.youku.com/v_show/id_XMzcxODQ4NjA3Mg==.html ...

  4. Lambda使用

    说明 本文内容来自 [Java8 In Action] 一书 四种方法引用类型 类型 示例 引用静态方法 ContainingClass::staticMethodName 引用某个对象的实例方法 c ...

  5. OC对象里面包含的结构体类型的属性,不能对该结构体属性的成员单个进行修改

    OC对象里面包含的结构体类型的属性,不能对该结构体属性的成员单个进行修改,需要对OC对象的结构体属性整体赋值. 关于网上很多博客写着“结构体类型里面的某个属性如果想要修改是不允许单个修改的” 之解释: ...

  6. Xcode 7.0 SDK(Software Development Kit) 及 Sandbox(沙盒) 存放路径

    1. Sandbox(沙盒) 存放路径 我的硬盘/Users/wj121/Library/Developer/CoreSimulator/Devices/879D7E35-BE50-4620-97E1 ...

  7. [转载] iOS应用程序的生命周期

    iOS应用程序的生命周期 2015-06-23 iOS大全 (点击上方蓝字,快速关注我们) iOS应用程序一般都是由自己编写的代码和系统框架(system frameworks)组成,系统框架提供一些 ...

  8. 打印iframe某区域

    <a href="#" onClick="parent.iframe名字.focus();window.print();">打印</a>

  9. C#中小写人民币转大写

    /// <summary> /// 转换成大写人民币 /// </summary> /// <param name="myMoney">< ...

  10. iOS 获取蜂窝网络信号强度 包含iPhoneX XS XR XSMASX (最新)

    1.虽然各种直接获取信号强度的api都被封杀了.但是还有一个另类的黑魔法可以获取到.那就是遍历UIStatusBar了 网络上有的文章写的会崩溃 比如: - (int)getSignalStrengt ...