网易首页 > 网易号 > 正文 申请入驻

Spring Boot干货系列: (一)优雅的入门篇

0
分享至

前言

Spring一直是很火的一个开源框架,在过去的一段时间里,Spring Boot在社区中热度一直很高,所以决定花时间来了解和学习,为自己做技术储备。

正文

首先声明,Spring Boot不是一门新技术,所以不用紧张。从本质上来说,Spring Boot就是Spring,它做了那些没有它你也会去做的Spring Bean配置。它使用“习惯优于配置”(项目中存在大量的配置,此外还内置了一个习惯性的配置,让你无需手动进行配置)的理念让你的项目快速运行起来。使用Spring Boot很容易创建一个独立运行(运行jar,内嵌Servlet容器)、准生产级别的基于Spring框架的项目,使用Spring Boot你可以不用或者只需要很少的Spring配置。

Spring Boot精要

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

  • 自动配置:针对很多Spring应用程序常见的应用功能,Spring Boot能自动提供相关配置

  • 起步依赖:告诉Spring Boot需要什么功能,它就能引入需要的库。

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

  • Actuator:让你能够深入运行中的Spring Boot应用程序,一套究竟。

详细的我们就不展开,等你爱上后自然会去深入的了解,后续章节我们会一一展开介绍。接下来让我们开搞吧。我已经迫不及待的要尝尝Spring Boot的味道了。

系统要求

目前Spring Boot正式版为1.5.1.RELEASE默认情况下,Spring Boot 1.5.1.RELEASE需要Java 7和Spring Framework 4.3.6.RELEASE或更高版本,你也可以使用Spring Boot with Java 6和一些额外的配置(不建议),使用Maven(3.2+)或Gradle 2(2.9或更高版本)和3来构建。

虽然你可以使用Java 6或7的Spring Boot,但我们通常推荐Java 8。

所以本博客系列统一使用Java 1.8,Spring Boot 1.5.1.RELEASE以及Maven3.3.9版本。开发工具使用IDEA(强烈推荐,可以看我另外一篇介绍IDEA入门文章,内有官方中文教程:Java人员正确使用 IntelliJ IDEA的方式,点我头像里面有文章)

光速入门-开发一个web服务

没有比较就没有伤害,让我们先看看传统Spring MVC开发一个简单的Hello World Web应用程序,你应该做什么,我能想到一些基本的需求。

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

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

  • 一个启动了Spring MVC的Spring配置

  • 一控制器类,以“hello World”相应HTTP请求。

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

    最让人难以接受的是,这份清单里面只有一个东西是和Hello World功能相关的,即控制器,剩下的都是Spring开发的Web应用程序必需的通用模板。

接下来看看Spring Boot如何搞定?

很简单,我仅仅只需要非常少的几个配置就可以迅速方便的搭建起来一套web项目

初始化Spring Boot项目

构建一个Sping Boot的Maven项目,强烈推荐Spring Initializr,它从本质上来说就是一个Web应用程序,它能为你生成Spring Boot项目结构。

Spring Initializr有几种用法:

  • 通过Web界面使用

    1.访问:http://start.spring.io/

    2.选择构建工具Maven Project、Spring Boot版本1.5.1以及一些工程基本信息,可参考下图所示

3.点击Generate Project下载项目压缩包

4.导入到你的工程,如果是IDEA,则需要:

a.菜单中选择File–>New–>Project from Existing Sources...

b.选择解压后的项目文件夹,点击OK

c.点击Import project from external model并选择Maven,点击Next到底为止。

d.若你的环境有多个版本的JDK,注意到选择Java SDK的时候请选择Java 7以上的版本

  • 通过IntelliJ IDEA使用(个人推荐)

IntelliJ IDEA是非常流行的IDE,IntelliJ IDEA 14.1已经支持Spring Boot了。

创建Spring Boot操作步骤如下:

在File菜单里面选择 New > Project,然后选择Spring Initializr,接着如下图一步步操作即可。

 

项目结构

根据上面的操作已经初始化了一个Spring Boot的框架了,项目结构如下:

如你所见,项目里面基本没有代码,除了几个空目录外,还包含如下几样东西。

  • pom.xml:Maven构建说明文件。

  • Chapter1Application.java:一个带有main()方法的类,用于启动应用程序(关键)。

  • Chapter1ApplicationTests.java:一个空的Junit测试类,它加载了一个使用Spring Boot字典配置功能的Spring应用程序上下文。

  • application.properties:一个空的properties文件,你可以根据需要添加配置属性。

解析pom.xml

大家跟我一起移步pom.xml,看看Spring Boot的跟普通Spring MVC工程的Maven配置有啥不一样

可以看出,有几个配置是不大一样的,我们挑几个重要的说说,要是客观不想过早的了解这些,自行跳过这一知

Spring Boot父级依赖

这块配置就是Spring Boot父级依赖,有了这个,当前的项目就是Spring Boot项目了,spring-boot-starter-parent是一个特殊的starter,它用来提供相关的Maven默认依赖,使用它之后,常用的包依赖可以省去version标签。关于Spring Boot提供了哪些jar包的依赖,可查看C:\Users\用户.m2\repository\org\springframework\boot\spring-boot-dependencies\1.5.1.RELEASE\spring-boot-dependencies-1.5.1.RELEASE.pom

这里我就贴一点点意思意思,如下:

如果你不想使用某个依赖默认的版本,您还可以通过覆盖自己的项目中的属性来覆盖各个依赖项,例如,要升级到另一个Spring Data版本系列,您可以将以下内容添加到pom.xml中。

原本默认版本是Ingalls-RELEASE的(看上面最后一行有说明Ingalls-RELEASE),现在就使用Fowler-SR2版本了,简单吧。

并不是每个人都喜欢继承自spring-boot-starter-parent POM。您可能有您需要使用的自己的公司标准parent,或者您可能更喜欢显式声明所有的Maven配置。

如果你不想使用spring-boot-starter-parent,您仍然可以通过使用scope = import依赖关系来保持依赖关系管理:

该设置不允许您使用如上所述的属性(properties)覆盖各个依赖项,要实现相同的结果,您需要在spring-boot-dependencies项之前的项目的dependencyManagement中添加一个配置,例如,要升级到另一个Spring Data版本系列,您可以将以下内容添加到pom.xml中。

起步依赖 spring-boot-starter-xx

Spring Boot提供了很多”开箱即用“的依赖模块,都是以spring-boot-starter-xx作为命名的。举个例子来说明一下这个起步依赖的好处,比如组装台式机和品牌机,自己组装的话需要自己去选择不同的零件,最后还要组装起来,期间有可能会遇到零件不匹配的问题。耗时又消力,而品牌机就好一点,买来就能直接用的,后续想换零件也是可以的。相比较之下,后者带来的效果更好点(这里就不讨论价格问题哈),起步依赖就像这里的品牌机,自动给你封装好了你想要实现的功能的依赖。就比如我们之前要实现web功能,引入了spring-boot-starter-web这个起步依赖。我们来看看spring-boot-starter-web到底依赖了哪些,如下图:

嘿嘿嘿,看来依赖了好多呢,如果让我自己弄估计要调半天,所以Spring Boot通过提供众多起步依赖降低项目依赖的复杂度。起步依赖本质上是一个Maven项目对象模型(Project Object Model,POM),定义了对其他库的传递依赖,这些东西加在一起即支持某项功能。很多起步依赖的命名都暗示了它们提供的某种或者某类功能。

Spring Boot Maven插件

上面的配置就是Spring Boot Maven插件,Spring Boot Maven插件提供了许多方便的功能:

  • 把项目打包成一个可执行的超级JAR(uber-JAR),包括把应用程序的所有依赖打入JAR文件内,并为JAR添加一个描述文件,其中的内容能让你用java -jar来运行应用程序。

  • 搜索public static void main()方法来标记为可运行类。

应用入口类

Chapter1Application是一个很关键的启动类,程序的入口就是这里,为了演示简单,我们不再新

建控制类,而是直接在这个入口类中编写,添加@RestController以及index方法,如下:

  1. @SpringBootApplication是Sprnig Boot项目的核心注解,主要目的是开启自动配置。后续讲解原理的时候再深入介绍。

  2. main方法这是一个标准的Java应用的main的方法,主要作用是作为项目启动的入口。

  3. @RestController注解等价于@Controller+@ResponseBody的结合,使用这个注解的类里面的方法都以json格式输出。

最后,启动项目有三种方式:

  • Chapter1Application的main方法

  • 使用命令 mvn spring-boot:run”在命令行启动该应用,IDEA中该命令在如下位置:

  • 运行“mvn package”进行打包时,会打包成一个可以直接运行的 JAR 文件,使用“java -jar”命令就可以直接运行。

打开浏览器访问http://localhost:8080, 你就能看到页面显示Hello Spring Boot效果了,一个简单的Web的项目就是如此简单。

结束

虽然我上面讲解了那么多,但是实际开发步骤就是那么简单暴力,初始化一个Spring Boot,添加一个控制类,启动就能看到效果了。

本章作为入门Spring Boot的入门介绍,相关的需要理解的概念就只有这几点:

  • Spring Boot父级依赖的概念

  • 起步依赖 spring-boot-starter-xx的概念

  • 应用入口类的作用

最后希望你玩的开心~

源码下载

( ̄︶ ̄)↗[相关示例完整代码] https://github.com/tengj/SpringBootDemo/tree/master

我手里有几本Spring Boot的中文电子书资料,有需要的可以关注小编微信公众号(嘟爷java超神学堂),自行前往下载【开发工具->java电子书籍】

想了解更多后端编程干货文章,可以点小编头像查看哦~

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
世界上最好的养生,就两个字!

世界上最好的养生,就两个字!

大禹小城
2024-04-23 14:23:34
近日,美籍华裔前驻华大使骆家辉声称,中国不宜过分发展尖端芯片

近日,美籍华裔前驻华大使骆家辉声称,中国不宜过分发展尖端芯片

好笑娱乐君每一天
2024-04-26 05:51:42
贾跃亭喊话马斯克:我能让特斯拉更进一步!马斯克:你教我做事吗

贾跃亭喊话马斯克:我能让特斯拉更进一步!马斯克:你教我做事吗

户外小阿隋
2024-04-26 10:01:40
天哪罗志祥的脸太吓人了,满脸的科技感,好像哪里都动过了

天哪罗志祥的脸太吓人了,满脸的科技感,好像哪里都动过了

娱乐的小灶
2024-04-26 02:54:50
像荆州这种每家每户都有一口大鱼塘,真是太美了

像荆州这种每家每户都有一口大鱼塘,真是太美了

作家李楠枫
2024-04-25 21:37:25
不装了,梅西社媒动情发文!巴萨同步纪念,球迷:球王有情有义

不装了,梅西社媒动情发文!巴萨同步纪念,球迷:球王有情有义

阿泰希特
2024-04-26 11:48:05
成都的投资客,是真不听劝啊!

成都的投资客,是真不听劝啊!

不鱼
2024-04-26 12:22:55
杭州西湖有人组团往水里放生甲鱼等外来物种?景区管委会:属实,他们避开了监控

杭州西湖有人组团往水里放生甲鱼等外来物种?景区管委会:属实,他们避开了监控

环球网资讯
2024-04-25 21:06:19
男友一直问“**了么”,那到底是什么感觉?

男友一直问“**了么”,那到底是什么感觉?

性学研究僧
2024-04-18 11:04:52
拉塞尔7中0,湖人为何三次被掘金逆转?谁注意浓眉赛前举动

拉塞尔7中0,湖人为何三次被掘金逆转?谁注意浓眉赛前举动

东球弟
2024-04-26 12:53:18
美媒晒数据:戈登G3砍29分 湖人替补G2+G3共得25分

美媒晒数据:戈登G3砍29分 湖人替补G2+G3共得25分

直播吧
2024-04-26 14:50:25
莫妮卡·贝鲁奇登上西班牙版《Elle》杂志封面,状态极佳

莫妮卡·贝鲁奇登上西班牙版《Elle》杂志封面,状态极佳

南枫八爪娱
2024-04-24 21:32:00
成都天府绿道小麦菜籽成熟了还没收割?管理方:有农耕人员专门负责 4月底陆续收割

成都天府绿道小麦菜籽成熟了还没收割?管理方:有农耕人员专门负责 4月底陆续收割

封面新闻
2024-04-25 13:36:22
男子扛媳妇和女儿爬泰山,脸不红气不喘淡定向前,看颜值网友慕了

男子扛媳妇和女儿爬泰山,脸不红气不喘淡定向前,看颜值网友慕了

水泥土的搞笑
2024-04-25 17:48:45
安理会上,中美俄爆发一场激烈交锋!美司令哀叹:中国6年增2倍

安理会上,中美俄爆发一场激烈交锋!美司令哀叹:中国6年增2倍

说天说地说实事
2024-04-25 20:54:57
4月25日俄乌:10亿援助发送,美国战略转变,乌克兰反击弥补损失

4月25日俄乌:10亿援助发送,美国战略转变,乌克兰反击弥补损失

山河路口
2024-04-25 16:13:24
女子吐槽燃气费翻倍后丈夫遭“约谈”,昆山回应

女子吐槽燃气费翻倍后丈夫遭“约谈”,昆山回应

新晚报
2024-04-26 07:44:24
我国首位女航天员刘洋,没生孩子就上太空,返回地球后消失人前

我国首位女航天员刘洋,没生孩子就上太空,返回地球后消失人前

搞笑的阿票
2024-04-25 07:55:03
《哈尔滨1944》直到宋卓武牺牲,宋卓文才明白,关雪为何不杀自己

《哈尔滨1944》直到宋卓武牺牲,宋卓文才明白,关雪为何不杀自己

娱乐倾城巷
2024-04-26 13:10:25
那天晚上,洗完澡后,我没有穿内衣,直接上了床上

那天晚上,洗完澡后,我没有穿内衣,直接上了床上

户外阿崭
2024-04-25 15:56:43
2024-04-26 15:34:44
指上言情
指上言情
精选言情小说日推
9文章数 19关注度
往期回顾 全部

科技要闻

中国车企“五常”激战北京车展

头条要闻

中国女留学生在澳失联在泰国被找到 家人被骗超百万元

头条要闻

中国女留学生在澳失联在泰国被找到 家人被骗超百万元

体育要闻

库里当选最佳关键球员 10项数据联盟第一

娱乐要闻

金靖回应不官宣恋情结婚的原因

财经要闻

24年后再产纯净水 农夫山泉为何要打自己脸

汽车要闻

2024北京车展 比亚迪的自驱力让对手紧追猛赶

态度原创

艺术
房产
数码
公开课
军事航空

艺术要闻

艺术名画︱爱尔兰画家大卫·科因的刀画作品

房产要闻

涉及黄埔、番禺、增城!广州新一轮大规模征地启动

数码要闻

酷冷至尊 Cooling X 台式电脑国行上市:水冷散热侧板,33999 元

公开课

睡前进食会让你发胖吗?

军事要闻

以军称已完成对拉法地面军事行动准备工作

无障碍浏览 进入关怀版